/*
有关割点的问题
*/
#include<cstdio>
#include<cstring>#include<cstdlib>
#include<vector>
using namespace std;
char a[110][32];
int dfs_clock,pre[210],iscut[210],low[210];
vector<int>g[210];
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
int dfs(int u,int fa)
{
int lowu = pre[u] = ++dfs_clock;
int child = 0;
for(int i = 0; i<g[u].size(); i++)
{
int v = g[u][i];
if(!pre[v])
{
child++;
int lowv = dfs(v,u);
lowu = min(lowu,lowv);
if(lowv >= pre[u])
iscut[u] = 1;
}
else if(pre[v]<pre[u]&&v!=fa)
lowu = min(lowu,pre[v]);
}
if(fa<0&&child==1) iscut[u] = 0;
low[u] = lowu;
return lowu;
}
int main()
{
int n,m,count=0;
while(scanf("%d",&n)==1)
{
if(!n) break;
memset(low,0,sizeof(low));
memset(iscut,0,sizeof(iscut));
memset(pre,0,sizeof(pre));
for(int i = 0; i < 210; i++)
g[i].clear();
for(int i = 0; i < n; i++)
scanf("%s",a[i]);
qsort(a,n,sizeof(a[0]),cmp);
scanf("%d",&m);
char t1[33],t2[33];
int u,v;
for(int i = 0; i < m; i++)
{
scanf("%s %s",&t1,&t2);
for(int j = 0; j < n; j++)
{
if(!strcmp(t1,a[j]))
u = j;
if(!strcmp(t2,a[j]))
v = j;
}
g[u].push_back(v);
g[v].push_back(u);
}
for(int i = 0; i < n; i++)
{
dfs_clock=0;
if(!pre[i])
dfs(i,-1);
}
int ans = 0;
for(int i = 0; i < n; i++)
ans+=iscut[i];
if(count>0)
puts("");
printf("City map #%d: %d camera(s) found\n",++count,ans);
for(int i = 0; i < n; i++)
if(iscut[i])
puts(a[i]);
}
return 0;
}