#include<bits/stdc++.h>
using namespace std;
char op;
string name,fa;
map<string,string> m;
string find(string x){
if(x!=m[x]) m[x]=find(m[x]);
return m[x];
}
int main(){
cin>>op;
while(op!='$'){
cin>>name;
if(op=='#'){
fa=name;//因为后面可能跟着n多个儿子,所以缓存先(感谢老师灵感^v^)
if(m[name]=="") m[name]=name;//并查集嘛,没出现过的就当做自己是祖先
}
if(op=='+') m[name]=fa;//是儿子就记录父亲
if(op=='?') cout<<name<<" "<<find(name)<<endl;//要查就查了
cin>>op;
}
return 0;
}
/**************************************************************
Problem: 2236
User: yanye
Language: C++
Result: Accepted
Time:92 ms
Memory:5048 kb
****************************************************************/