#include <bits/stdc++.h>
using namespace std;
int t;
bitset < 1005 > b[500005];
struct node{
short son[30];
};
node trie[500005];
int pos = 0;
void insert(string s,int tag)
{
int len = s.size();
int p = 0;
for (int i = 0;i < len;i++)
{
int ch = s[i] - 'a';
if (trie[p].son[ch] == 0) trie[p].son[ch] = ++pos;
p = trie[p].son[ch];
}
b[p][tag] = 1;
}
void query(string s)
{
int len = s.size();
int p = 0;
for (int i = 0;i < len;i++)
{
int ch = s[i] - 'a';
p = trie[p].son[ch];
if (p == 0) return;
}
for (int i = 1;i <= t;i++)
if (b[p][i]) cout << i << " ";
cout << endl;
}
int main()
{
cin >> t;
string s;
for (int i = 1;i <= t;i++)
{
int l;
cin >> l;
for (int j = 1;j <= l;j++)
{
cin >> s;
insert(s,i);
}
}
cin >> t;
for (int i = 1;i <= t;i++)
{
cin >> s;
query(s);
}
return 0;
}