#include <stdio.h>
#include<string.h>
struct Mz{
	char m[21];
	char g[81];
}mz[100001];
int main(){
int N,i;char b;
for(i=0;;i++){
    scanf("%c",&b);
    if(b=='@'){
    getchar();getchar();getchar();getchar();//吃掉END@ 
    break;
    }
	for(int k=0;;k++){
        scanf("%c",&mz[i].m[k]);
        if(mz[i].m[k]==']'){
            mz[i].m[k]='\0';
            break;
        }
        }
    getchar();//把空格吃了 
	gets(mz[i].g);
}
scanf("%d",&N);
char temp[80],c;
while(N--){
    scanf("%c",&c);
    if(c=='\n')//天坑!!!
        scanf("%c",&c);
        
    int tap=0;
	if(c=='['){
		for(int k=0;;k++){
            scanf("%c",&temp[k]);
            if(temp[k]==']'){
                temp[k]='\0';
                break;
            }   
        }
        for(int j=0;j<i;j++)
			if(strcmp(mz[j].m,temp)==0){
			    puts(mz[j].g);
                tap=1;
		    }
	    if(tap==0)printf("what?\n");
	}
	else {
        temp[0]=c;char *p=&temp[1];
        gets(p);
		for(int j=0;j<i;j++)
			if(strcmp(mz[j].g,temp)==0){
			    puts(mz[j].m);
                tap=1;
		    }
        if(tap==0)
             printf("what?\n");
	}
}
	return 0;
}