#include <bits/stdc++.h>
using namespace std;

map<string, int> Map;  //將每個點從字串換成編號
vector<string> toPoint[10001];  // 用來存每個點能連到哪些點

void BFS(string Start, string End)
{
    queue<string> Q;
    Q.push(Start);
    int visit[10001] = {0};
    visit[Map[Start]] = 1;

    string cur;
    bool findedEnd = 0;
    while (!Q.empty() && !findedEnd) {  // BFS演算法
        cur = Q.front();
        Q.pop();

        for (string &nxt : toPoint[Map[cur]]) {
            if (visit[Map[nxt]] == 0) {
                visit[Map[nxt]] = visit[Map[cur]] + 1;
                if (nxt == End){
                    findedEnd = 1;
                    break;
                }
                Q.push(nxt);
            }
        }
    }
    // 從終點逆向走回起點,並將過程存在ans裡
    int step_count = visit[Map[End]];
    cur = End;
    vector<string> ans;
    ans.push_back(End);
    bool stop = 0;
    while (!stop) {
        bool finded_nxt_point = 0;
        for (string &nxt : toPoint[Map[cur]]) {
            if (nxt == Start) {
                ans.push_back(Start);
                stop = 1;
                break;
            }
            if (visit[Map[nxt]] == step_count - 1) {
                --step_count;
                ans.push_back(nxt);
                cur = nxt;
                finded_nxt_point = 1;
                break;
            }
        }
        if (!finded_nxt_point) stop = 1;
    }
    if (visit[Map[End]] == 0) cout << "No route" << endl;
    else {
        for (int i = ans.size() - 1; i > 0; --i)
            cout << ans[i] << ' ' << ans[i-1] << endl;
    }
}
int main()
{
 //   freopen("input.txt","rt",stdin);
    ios::sync_with_stdio(false);
    int N, blank_line = 0;
    while (cin >> N) {
        if (blank_line) cout << endl;
        blank_line = 1;
        Map.clear();
        for (auto &v : toPoint) v.clear();

        string p1, p2;
        for (int i = 0, j = 1; i < N; ++i) {
            cin >> p1 >> p2;
            if (!Map[p1]) Map[p1] = j++;
            if (!Map[p2]) Map[p2] = j++;
            toPoint[Map[p1]].push_back(p2);
            toPoint[Map[p2]].push_back(p1);
        }
        cin >> p1 >> p2;
        //p1,p2不管是否為前面儲存的點,如果p1==p2就輸出p1 p2
        if (p1 == p2) cout << p1 << ' ' << p2 << endl;
        else if (!Map[p1] || !Map[p2]) cout << "No route" << endl;
        else BFS (p1, p2);
    }
}