#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#include<map>
#define N 5000
using namespace std;
int p[N],u[N],v[N];
double w[N];
map<string,int>s;
bool cmp(const int a,const int b)
{
return w[a]<w[b];
}
int find(int x)
{
return p[x]==x?x:p[x]=find(p[x]);
}
double kruskal(int n,int m)
{
int i,j,r[N];
double ans=0;
for(i=0;i<n;i++)
p[i]=i;
for(i=1;i<=m;i++)
r[i]=i;
sort(r+1,r+m+1,cmp);
for(i=1;i<=m;i++)
{
int e=r[i];int x=find(u[e]);int y=find(v[e]);
if(x!=y)
{
ans+=w[e];
p[x]=y;
}
}
return ans;
}
int main()
{
int i,j,k,n,m;double lim,ans;
char ch[50];
cin>>lim;
cin>>n;
getchar();
for(i=1;i<=n;i++)
{
gets(ch);
s[ch]=i;
}
cin>>m;
getchar();
for(i=1;i<=m;i++)
{
scanf("%s",ch);
u[i]=s[ch];
getchar();
scanf("%s",ch);
v[i]=s[ch];
scanf("%lf",&w[i]);
getchar();
}
ans=kruskal(n,m);
if(ans>lim)
cout<<"Not enough cable\n";
else
printf("Need %.1f miles of cable\n",ans);
return 0;
}