#include <bits/stdc++.h>
using namespace std;
int n,m,f[20001],fa,cnt;
map <int,string> q;
int findd(int k){
if(f[k]==k)return k;
else return f[k]=findd(f[k]);
}
char op;
string sb;
int main(){
ios::sync_with_stdio(false);
for(register int i=1;i<=n;i++)f[i]=i;
while(1){
cin>>op;
if(op=='#'){
cin>>sb;
q[++cnt]=sb;
fa=cnt;
}
if(op=='+'){
cin>>sb;
q[++cnt]=sb;
f[findd(cnt)]=findd(fa);
}
if(op=='?'){
cin>>sb;
cout<<sb<<" ";
int len=q.size(),bf;
for(int i=1;i<=len;i++){
if(q[i]==sb){
bf=i;
}
}
string qq=q[findd(bf)];
cout<<qq<<endl;
}
if(op=='$')break;
}
}