#include<map>
using?namespace?std;
int?main(){
map<int,?bool>?map1,?res_map,?mapa,?mapb;//res_map保存兩個數組的不同元素
map<int,?bool>::iterator?it;
int?a[20],?b[20];
int?num?=?0;
cin>>?num;
for(int?i?=0;?i<?num;?i++){
cin>>a[i];
mapa[a[i]]?=?true;
}
for(int?i?=0;?i<?num;?i++){
cin>>b[i];
mapb[b[i]]?=?true;
}
int?idx?=?0;
for(int?i?=?0;?i<?num;?i++){//去除a中的重復元素
if(mapa.find(a[i])?==?mapa.end()){
a[idx]?=?a[i];
idx++;
}
}
idx?=?0;
for(int?i?=?0;i?<num;?i++){//去除b中的重復元素
if(mapb.find(b[i])?==?mapb.end()){
b[idx]?=?b[i];
idx++;
}
}
for(int?i?=?0;?i<?num;i++){
map1[a[i]]?=?true;
}
for(int?i?=?0;?i?<?num;?i++){//尋找兩個數組的公***元素,並保存在res_map中
it?=?map1.find(b[i]);
if(it?!=?map1.end()){
res_map[b[i]]?=?true;
}
}
int?e?=?0;
bool?is_first?=?true;
//按a中原始順序,輸出滿足條件的元素
for(int?e?=?0;?e?<?mapa.size();?e++){
if(res_map.find(a[e])?==?res_map.end()){
if(!is_first){
cout<<'?';
}
cout<<a[e];
if(is_first)
is_first?=?false;
}
}
cout<<endl;
is_first?=?true;
//按b中原始順序,輸出滿足條件的b中的元素
for(int?e?=?0;?e<mapb.size();?e++){
if(res_map.find(b[e])?==?res_map.end()){
if(!is_first){
cout<<'?';
}
cout<<b[e];
if(is_first)
is_first?=?false;
}
}
cout<<endl;
int?stop;
cin>>stop;
return?0;
}