#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
****************************************************************/