//普通遍历会爆时间复杂度
// #include <iostream>
// using namespace std;
// #include<list>
// #include<algorithm>
// void printL(string s){
// cout<<s<<" ";
// }
// int main() {
// int n,m;
// cin>>n>>m;
// list<string>L;
// for(int i=0;i<n;i++){
// string s;
// cin>>s;
// L.push_back(s);
// }
// while(m--){
// string s1,s2;
// cin>>s1>>s2;
// auto pos_s1=find(L.begin(),L.end(),s1);
// L.erase(pos_s1);
// auto pos_s2=find(L.begin(),L.end(),s2);
// L.insert(pos_s2,s1);
// }
// for_each(L.begin(),L.end(), printL);
// }
// 64 位输出请用 printf("%lld")
//需要用map存储每个成员的迭代器
#include <iostream>
using namespace std;
#include<list>
#include<algorithm>
#include<map>
void printL(string s){
cout<<s<<" ";
}
int main() {
int n,m;
cin>>n>>m;
list<string>L;
map<string,list<string>::iterator>m1;
for(int i=0;i<n;i++){
string s;
cin>>s;
L.push_back(s);
list<string>::iterator nowinsetpos=--L.end();
m1.insert(make_pair(s,nowinsetpos));
}
while(m--){
string s1,s2;
cin>>s1>>s2;
auto pos_s1=m1[s1];;
L.erase(pos_s1);
auto pos_s2=m1[s2];
L.insert(pos_s2,s1);
}
for_each(L.begin(),L.end(), printL);
}