#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
struct data
{
string st;
int cnt[1000+5];
};
int t,m,t2,p,ans_gs,ans[1000+5];
string st2;
struct ha
{
int n,ans;
string st;
vector<data> hash[167449+5];
long long Change(string st)
{
int len=st.size();long long he=0,num=1;
for (int i=0;i<len;i++)
{
num*=128;num%=167449;
he+=num*int(st[i]);he%=167449;
}
return he;
}
int find_it(string st,int num)
{
int len=hash[num].size();
for (int i=0;i<len;i++)
if (hash[num][i].st==st) return i;
return -1;
}
void add(string st,int i)
{
long long num=Change(st);
int p=find_it(st,num);
if (p==-1)
{
data a;
a.st=st;
for (int j=0;j<=t;j++)
a.cnt[j]=0;
a.cnt[i]=1;
hash[num].push_back(a);
}
else
{
hash[num][p].cnt[i]=1;
}
}
void ff_out()
{
for (int i=0;i<167449;i++)
{
int len=hash[i].size();
for (int j=0;j<len;j++)
{
cout<<hash[i][j].st<<" "<<Change(hash[i][j].st)<<endl;
for (int k=1;k<=t;k++)
cout<<hash[i][j].cnt[k]<<" ";cout<<endl;
}
}
cout<<endl;
}
}has;
int main()
{
//freopen("a.out","w",stdout);
cin>>t;
for (int i=1;i<=t;i++)
{
cin>>m;
for (int j=1;j<=m;j++)
{
cin>>st2;
has.add(st2,i);
//has.ff_out();
}
}
cin>>t2;
for (int i=1;i<=t2;i++)
{
cin>>st2;
int num_now=has.Change(st2);
p=has.find_it(st2,num_now);
if (p==-1)
{
cout<<endl;
continue;
}
ans_gs=0;
for (int j=1;j<=t2;j++)
if (has.hash[num_now][p].cnt[j]==1)
{
ans_gs++;
ans[ans_gs]=j;
}
for (int j=1;j<=ans_gs-1;j++)
cout<<ans[j]<<" ";
cout<<ans[ans_gs]<<endl;
}
}