#include <iostream>
#include <cstdio>
#include <string>
#include <map>
using namespace std;
const int N = int(5e4);
map<string, int> family;
string find(string name)
{
int k = family[name];
map<string, int>::iterator it;
for(it = family.begin(); it != family.end(); it++)
{
if((*it).second == k)
return (*it).first;
}
}
int main()
{
char In = '*';
string name;
int f;
for(int i = 0; In != '$'; i++)
{
cin >> In;
if(In == '$')
break;
cin >> name;
if(In == '#')
{
map<string, int>::iterator w;
w = family.find(name);
if(w == family.end())
family[name] = f = i;
else
f = (*w).second;
}
if(In == '+')
family[name] = f;
if(In == '?')
{
cout << name << " ";
string p = find(name);
cout << p << endl;
}
}
return 0;
}