#include <iostream>
#include <map>
#include <string>
#include <vector>

using namespace std;


struct par {
    float c;
    int d;
};

float maxCosto = 0;



float Prim (vector< vector<par> > & grafo){
vector<float> costo;
vector<int> origen;
vector<bool> esta;

    float total = 0;
    for(unsigned int i = 0; i < grafo.size(); i++) {
        esta.push_back(false);
        costo.push_back(maxCosto+1);
        origen.push_back(-1);
    }
    esta[0] = true;


    for(unsigned int i = 0; i < grafo[0].size(); i++)
    {
        costo[grafo[0][i].d] = grafo[0][i].c;
        origen[i] = 0;
    }

    for (unsigned int i=1; i<grafo.size(); i++){

/*
        for(unsigned int i = 0; i < grafo.size(); i++)
        {
            cout << costo[i] << " " << origen[i] <<   " " << esta[i] <<endl ;
        }
        cout << " "<<total<<endl<<endl;
*/

        float min = maxCosto;
        int nuevo;
        for(unsigned int i = 0; i < grafo.size(); i++)
        {
            if(!esta[i] && costo[i] <= min) {
                min = costo[i];
                nuevo = i;
            }
        }
        total += min;

        for(unsigned int i = 0; i < grafo[nuevo].size(); i++)
        {
            if(costo[grafo[nuevo][i].d] > grafo[nuevo][i].c) {
                costo[grafo[nuevo][i].d] = grafo[nuevo][i].c;
                origen[i] = nuevo;
            }
        }
        esta[nuevo] = true;
    }

    return total;
}




int main()
{
    float longCable;
    while(cin >> longCable)
    {
        vector< vector<par> > grafo;

        int cantNodos;
        cin >> cantNodos;
        map<string, int> nombres;
        for(int i = 0; i < cantNodos;i++)
        {
            grafo.push_back(vector<par>());
            string s;
            cin >> s;
            nombres[s] = i;
        }
        int arcos;
        cin >> arcos;
        for(int i = 0; i < arcos; i++)
        {
            string o, d;
            par p;
            cin >> o >> d >> p.c;
            if(p.c > maxCosto)
                maxCosto = p.c;
            p.d = nombres[d];
            grafo[nombres[o]].push_back(p);
            par sim;
            sim.d = nombres[o];
            sim.c = p.c;
            grafo[p.d].push_back(sim);
        }

        float t = Prim(grafo);



        if(t <= longCable) {
            int trampa = (t * 10 + 0.5);
            cout << "Need " << trampa / 10.f << " miles of cable" << endl;
        }
        else
            cout << "Not enough cable" << endl;
    }
    return 0;
}















