#include<iostream>
#include<fstream>
#include<string>
#include<queue>
#include<stack>
using namespace std;
string city_num[700];
int num_total_city;
bool m[700][700],inside,findend=0;
queue<int> q;
stack<string> p;
int father[700],from_num,to_num;
int searching(string s){
    int i;
    for(i=0;i<num_total_city;i++){
        if(city_num[i]==s){
            return i;
        }
    }
    return -1;
}
void bfs(int i){
    int j;
    if(i<0) return;
    for(j=0;j<num_total_city;j++){
        if(m[i][j]){
            if(father[j]==-1) father[j]=i;
            if(j==to_num){
                findend=true;
                return;
            }
            q.push(j);
            m[j][i]=false;
        }
    }
    while(!q.empty()){
        i=q.front();
        for(j=0;j<num_total_city;j++){
            if(m[i][j]){
                if(father[j]==-1) father[j]=i;
                if(j==to_num){
                    findend=true;
                    return;
                }
                q.push(j);
                m[j][i]=false;
            }
        }
        q.pop();
    }
}
int main()
{
    ifstream fin;
    fin.open("7.txt");
    istream& input(cin);

    int i,j,num1,num2,n;
    string city[1400],from,to;
    char x;

    while(input>>n){
        for(i=0;i<700;i++){
            for(j=0;j<700;j++){
                m[i][j]=false;
            }
        }
        while(!p.empty()) p.pop();
        while(!q.empty()) q.pop();
        findend=false;
        for(i=0;i<700;i++){
            city_num[i]="";
            father[i]=-1;
        }
        for(i=0;i<1400;i++){
            city[i]="";
        }

        for(i=0;i<n*2;i++){
            input>>city[i];
        }
        input>>from>>to;
        num_total_city=0;
        for(i=0;i<n*2;i++){
            inside=false;
            for(j=0;j<num_total_city;j++){
                if(city[i]==city_num[j]){
                    inside=true;
                }
            }
            if(!inside){
                city_num[num_total_city]=city[i];
                num_total_city++;
            }
        }
        for(i=0;i<n*2;i=i+2){
            num1=searching(city[i]);
            num2=searching(city[i+1]);
            m[num1][num2]=true;
            m[num2][num1]=true;
        }
        /*for(i=0;i<num_total_city;i++){
            for(j=0;j<num_total_city;j++){
                cout<<m[i][j];
            }
            cout<<endl;
        }*/
        from_num=searching(from);
        to_num=searching(to);
        bfs(from_num);
        p.push(to);
        i=to_num;
        while(father[i]!=-1){
            i=father[i];
            p.push(city_num[i]);
        }
        if(!findend&&to!=from){
            cout<<"No route"<<endl;
        }
        if(findend){
            while(!p.empty()){
                cout<<p.top()<<" ";
                p.pop();
                cout<<p.top()<<endl;
                if(p.size()==1) break;
            }
        }
        cout<<endl;
    }
}
