#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
const int mm=100010;
class node
{
public:
char e[20],s[20];
}dic[mm];
char t[20];
int pos;
bool cmp(node a,node b)
{
return strcmp(a.s,b.s)<0;
}
int binsearch(char *s)
{
int l=0,r=pos-1;
while(l<=r)
{
int mid = (l+r)/2;
if(strcmp(dic[mid].s,s)==0)
return mid;
else if(strcmp(dic[mid].s,s)>0)
r=mid-1;
else
l=mid+1;
}
return -1;
}
int main()
{
pos=0;
char z;
while(scanf("%s%c",dic[pos].e,&z)!=EOF)
{
if(z=='\n')
{
strcpy(t,dic[pos].e);
break;
}
cin>>dic[pos++].s;
}
sort(dic,dic+pos,cmp);
int num = binsearch(t);
if(num>=0)
cout<<dic[num].e<<endl;
else
cout<<"eh"<<endl;
while(cin>>t)
{
num = binsearch(t);
if(num>=0)
cout<<dic[num].e<<endl;
else
puts("eh");
}
return 0;
}
#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
const int mm=100010;
class node
{
public:
char e[20],s[20];
}dic[mm];
char t[20];
int pos;
bool cmp(node a,node b)
{
return strcmp(a.s,b.s)<0;
}
int binsearch(char *s)
{
int l=0,r=pos-1;
while(l<=r)
{
int mid = (l+r)/2;
if(strcmp(dic[mid].s,s)==0)
return mid;
else if(strcmp(dic[mid].s,s)>0)
r=mid-1;
else
l=mid+1;
}
return -1;
}
int main()
{
pos=0;
char z;
while(scanf("%s%c",dic[pos].e,&z)!=EOF)
{
if(z=='\n')
{
strcpy(t,dic[pos].e);
break;
}
cin>>dic[pos++].s;
}
sort(dic,dic+pos,cmp);
int num = binsearch(t);
if(num>=0)
cout<<dic[num].e<<endl;
else
cout<<"eh"<<endl;
while(cin>>t)
{
num = binsearch(t);
if(num>=0)
cout<<dic[num].e<<endl;
else
puts("eh");
}
return 0;
}