#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<queue>#include<map>#include<algorithm>using namespace std;#define M 100000map<string, int> mp;map<int, string> mmp;int cnt;char str[1000], s1[1000], s2[1000];int vv[M<<1], nxt[M<<1], h[M], e, n;void add( int u, int v ){vv[e] = v, nxt[e] = h[u]; h[u] = e++;vv[e] = u, nxt[e] = h[v]; h[v] = e++;}int vis[M], pre[M];void dfs( int u, int fa ){if( vis[u] ) pre[u] = u;else pre[u] = pre[fa];for( int i = h[u]; i+1; i = nxt[i] ) if( vv[i] - fa ){dfs( vv[i], u );}}int main(){int cas = 0, n, u, v, m;while( scanf( "%s", str ) == 1 ){mp.clear(); cnt = 0;mmp.clear();scanf( "%d", &n );memset( h, -1, sizeof(h) ); e = 0;mp[str] = ++cnt;mmp[cnt] = str;for( int i = 0; i < n; ++i ){scanf( "%s%s", s1, s2 );if( !mp.count( s1 ) ) mp[s1] = ++cnt, mmp[cnt] = s1;if( !mp.count( s2 ) ) mp[s2] = ++cnt, mmp[cnt] = s2;add( mp[s1], mp[s2] );}scanf( "%d", &m );for( int i = 1; i <= cnt; ++i ) vis[i] = 0;for( int i = 0; i < m; ++i ){scanf( "%s", s1 );vis[mp[s1]] = 1;}pre[0] = pre[1] = 0;dfs( 1, 1 );scanf( "%d", &m );if( cas ) puts( "" );printf( "Function %dn", ++cas );for( int i = 0; i < m; ++i ){scanf( "%s", s1 );u = mp[s1];v = pre[u];if( v ) cout<<mmp[v]<<endl;else puts( "Exception" );}}}


