#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;
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGZzdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8cXVldWU+CiNpbmNsdWRlPHN0YWNrPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJpbmcgY2l0eV9udW1bNzAwXTsKaW50IG51bV90b3RhbF9jaXR5Owpib29sIG1bNzAwXVs3MDBdLGluc2lkZSxmaW5kZW5kPTA7CnF1ZXVlPGludD4gcTsKc3RhY2s8c3RyaW5nPiBwOwppbnQgZmF0aGVyWzcwMF0sZnJvbV9udW0sdG9fbnVtOwppbnQgc2VhcmNoaW5nKHN0cmluZyBzKXsKICAgIGludCBpOwogICAgZm9yKGk9MDtpPG51bV90b3RhbF9jaXR5O2krKyl7CiAgICAgICAgaWYoY2l0eV9udW1baV09PXMpewogICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gLTE7Cn0Kdm9pZCBiZnMoaW50IGkpewogICAgaW50IGo7CiAgICBpZihpPDApIHJldHVybjsKICAgIGZvcihqPTA7ajxudW1fdG90YWxfY2l0eTtqKyspewogICAgICAgIGlmKG1baV1bal0pewogICAgICAgICAgICBpZihmYXRoZXJbal09PS0xKSBmYXRoZXJbal09aTsKICAgICAgICAgICAgaWYoaj09dG9fbnVtKXsKICAgICAgICAgICAgICAgIGZpbmRlbmQ9dHJ1ZTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBxLnB1c2goaik7CiAgICAgICAgICAgIG1bal1baV09ZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgaT1xLmZyb250KCk7CiAgICAgICAgZm9yKGo9MDtqPG51bV90b3RhbF9jaXR5O2orKyl7CiAgICAgICAgICAgIGlmKG1baV1bal0pewogICAgICAgICAgICAgICAgaWYoZmF0aGVyW2pdPT0tMSkgZmF0aGVyW2pdPWk7CiAgICAgICAgICAgICAgICBpZihqPT10b19udW0pewogICAgICAgICAgICAgICAgICAgIGZpbmRlbmQ9dHJ1ZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBxLnB1c2goaik7CiAgICAgICAgICAgICAgICBtW2pdW2ldPWZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHEucG9wKCk7CiAgICB9Cn0KaW50IG1haW4oKQp7CiAgICBpZnN0cmVhbSBmaW47CiAgICBmaW4ub3BlbigiNy50eHQiKTsKICAgIGlzdHJlYW0mIGlucHV0KGNpbik7CgogICAgaW50IGksaixudW0xLG51bTIsbjsKICAgIHN0cmluZyBjaXR5WzE0MDBdLGZyb20sdG87CiAgICBjaGFyIHg7CgogICAgd2hpbGUoaW5wdXQ+Pm4pewogICAgICAgIGZvcihpPTA7aTw3MDA7aSsrKXsKICAgICAgICAgICAgZm9yKGo9MDtqPDcwMDtqKyspewogICAgICAgICAgICAgICAgbVtpXVtqXT1mYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB3aGlsZSghcC5lbXB0eSgpKSBwLnBvcCgpOwogICAgICAgIHdoaWxlKCFxLmVtcHR5KCkpIHEucG9wKCk7CiAgICAgICAgZmluZGVuZD1mYWxzZTsKICAgICAgICBmb3IoaT0wO2k8NzAwO2krKyl7CiAgICAgICAgICAgIGNpdHlfbnVtW2ldPSIiOwogICAgICAgICAgICBmYXRoZXJbaV09LTE7CiAgICAgICAgfQogICAgICAgIGZvcihpPTA7aTwxNDAwO2krKyl7CiAgICAgICAgICAgIGNpdHlbaV09IiI7CiAgICAgICAgfQoKICAgICAgICBmb3IoaT0wO2k8bioyO2krKyl7CiAgICAgICAgICAgIGlucHV0Pj5jaXR5W2ldOwogICAgICAgIH0KICAgICAgICBpbnB1dD4+ZnJvbT4+dG87CiAgICAgICAgbnVtX3RvdGFsX2NpdHk9MDsKICAgICAgICBmb3IoaT0wO2k8bioyO2krKyl7CiAgICAgICAgICAgIGluc2lkZT1mYWxzZTsKICAgICAgICAgICAgZm9yKGo9MDtqPG51bV90b3RhbF9jaXR5O2orKyl7CiAgICAgICAgICAgICAgICBpZihjaXR5W2ldPT1jaXR5X251bVtqXSl7CiAgICAgICAgICAgICAgICAgICAgaW5zaWRlPXRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIWluc2lkZSl7CiAgICAgICAgICAgICAgICBjaXR5X251bVtudW1fdG90YWxfY2l0eV09Y2l0eVtpXTsKICAgICAgICAgICAgICAgIG51bV90b3RhbF9jaXR5Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yKGk9MDtpPG4qMjtpPWkrMil7CiAgICAgICAgICAgIG51bTE9c2VhcmNoaW5nKGNpdHlbaV0pOwogICAgICAgICAgICBudW0yPXNlYXJjaGluZyhjaXR5W2krMV0pOwogICAgICAgICAgICBtW251bTFdW251bTJdPXRydWU7CiAgICAgICAgICAgIG1bbnVtMl1bbnVtMV09dHJ1ZTsKICAgICAgICB9CiAgICAgICAgLypmb3IoaT0wO2k8bnVtX3RvdGFsX2NpdHk7aSsrKXsKICAgICAgICAgICAgZm9yKGo9MDtqPG51bV90b3RhbF9jaXR5O2orKyl7CiAgICAgICAgICAgICAgICBjb3V0PDxtW2ldW2pdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgfSovCiAgICAgICAgZnJvbV9udW09c2VhcmNoaW5nKGZyb20pOwogICAgICAgIHRvX251bT1zZWFyY2hpbmcodG8pOwogICAgICAgIGJmcyhmcm9tX251bSk7CiAgICAgICAgcC5wdXNoKHRvKTsKICAgICAgICBpPXRvX251bTsKICAgICAgICB3aGlsZShmYXRoZXJbaV0hPS0xKXsKICAgICAgICAgICAgaT1mYXRoZXJbaV07CiAgICAgICAgICAgIHAucHVzaChjaXR5X251bVtpXSk7CiAgICAgICAgfQogICAgICAgIGlmKCFmaW5kZW5kJiZ0byE9ZnJvbSl7CiAgICAgICAgICAgIGNvdXQ8PCJObyByb3V0ZSI8PGVuZGw7CiAgICAgICAgfQogICAgICAgIGlmKGZpbmRlbmQpewogICAgICAgICAgICB3aGlsZSghcC5lbXB0eSgpKXsKICAgICAgICAgICAgICAgIGNvdXQ8PHAudG9wKCk8PCIgIjsKICAgICAgICAgICAgICAgIHAucG9wKCk7CiAgICAgICAgICAgICAgICBjb3V0PDxwLnRvcCgpPDxlbmRsOwogICAgICAgICAgICAgICAgaWYocC5zaXplKCk9PTEpIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGVuZGw7CiAgICB9Cn0K