#include <stdlib.h>
#include <cstdlib>
#include <fstream>


using namespace std;

#define MAXN 20005
#define MAXL 20


typedef struct{
        char s[MAXL];
        char d[MAXL];
} karta;

int n;
karta t[MAXN];

// ucitavanje imena
// Najpre se propustaju svi karakteri dok se ne dodje do velikog slova, a potom se ucita ime
void ucitaj(char* ss, ifstream &in){
      char c = 'a';
      int i = 0;
      while (c < 'A' || c > 'Z') in >> c;
      do {
            ss[i++] = c;
            in >> c;
            if (in.eof()) break;
      } while (c >= 'a' && c <= 'z');
      in.putback(c);
      ss[i] = 0;
}

// funkcija koju koristi quick sort za poredjenje
int uporedi_karte(const void* k1, const void* k2){
    karta* a = (karta*) k1;
    karta* b = (karta*) k2;
    return strcmp(a->s, b->s);
}

// pronalazi indeks karte sa datim polaznim mestom
// vrsi se binarna pretraga
int pronadji(char* s){
    int l = 0, d = n, m;
    while (1){
          if (l == d) return l;
          m = (l + d)/2;
          int x = strcmp(t[m].s,s);
          if (x > 0) d = m-1;
          else if (x < 0) l = m+1;
          else return m;
    }
}

int main(int argc, char *argv[])
{
    ifstream in("mornar.in");
    ofstream out("mornar.out");

    char start[MAXL], pom[MAXL];
    int i;
    in >> n;
    ucitaj(start, in);
    for (i = 0; i < n; i++){
        ucitaj(pom, in);
        ucitaj(t[i].s, in);
        ucitaj(t[i].d, in);
    }
    qsort(t, n, sizeof(karta), uporedi_karte);
    char *s;
    s = start;
    do{
       out << s << "->";
       int i = pronadji(s);
       s = t[i].d;                       
    } while  (strcmp((char*)start, s));
    out << start << endl;
    in.close();
    out.close();
    return EXIT_SUCCESS;
}
