#include<bits/stdc++.h>
using namespace std;
int cnt=0,N,m;
bool len[1005];
struct node{
int n[105];
int child[30];
}nodes[500005];
int create(){
cnt++;
return cnt;
}
void insert(string s,int w)
{
int p=0;
for(int i=0;i<s.size();i++){
if(!nodes[p].child[s[i]-'a'])
nodes[p].child[s[i]-'a']=create();
p=nodes[p].child[s[i]-'a'];
}
nodes[p].n[w]=true;
}
void search(string s)
{
int p=0;
for(int i=0;i<s.size();i++){
if(!nodes[p].child[s[i]-'a'])return ;
p=nodes[p].child[s[i]-'a'];
}
int k=1;
for(int i=1;i<=N;i++)
if(nodes[p].n[i])
len[i]=true;
}
int main()
{
scanf("%d",&N);
for(int i=1;i<=N;i++){
int l;
scanf("%d",&l);
for(int j=1;j<=l;j++){
string s;
cin>>s;
insert(s,i);
}
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
string s;
cin>>s;
memset(len,false,sizeof(len));
search(s);
for(int j=1;j<=N;j++)
if(len[j])printf("%d ",j);
printf("\n");
}
return 0;
}
rt,这样只能拿九十分.难道数据加强后Trie做不了了?