#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct node{
vector<int> id;
int son[30];
bool isend;
}t[100005];
int cnt=1,id=1;
void insert(string s)
{
int now=0;
for(int i=0;i<s.size();++i)
{
if(t[now].son[s[i]-'a']==0)
{
t[now].son[s[i]-'a']=cnt++;
}
now=t[now].son[s[i]-'a'];
if(i==s.size()-1)
{
t[now].isend=1;
if(t[now].id.size()==0||t[now].id[t[now].id.size()-1]!=id)
{
t[now].id.push_back(id);
}
}
}
}
void find(string s)
{
int now=0;
for(int i=0;i<s.size();++i)
{
if(t[now].son[s[i]-'a']==0)
{
cout<<endl;
return;
}
now=t[now].son[s[i]-'a'];
}
if(t[now].isend==0)
{
cout<<endl;
return;
}
for(int i=0;i<(t[now].id).size();++i)
{
cout<<t[now].id[i];
if(i!=(t[now].id).size()-1)
{
cout<<' ';
}
}
cout<<endl;
}
int main()
{
int n,m;
cin>>n;
for(int i=1;i<=n;++i)
{
int l;
cin>>l;
while(l--)
{
string t;
cin>>t;
insert(t);
}
id++;
}
cin>>m;
while(m--)
{
string t;
cin>>t;
find(t);
}
return 0;
}