#include <bits/stdc++.h>
using namespace std;
struct node {
set<int> lst;
int child[26];
} trie[20005];
int siz;
void insert(string s, int art) {
int p = 0;
for (int i = 0; i < s.size(); ++i) {
if (trie[p].child[s[i] - 'a'] == 0) {
trie[p].child[s[i] - 'a'] = ++siz;
}
p = trie[p].child[s[i] - 'a'];
}
trie[p].lst.insert(art);
}
int query(string s) {
int p = 0;
for (int i = 0; i < s.size(); ++i) {
if (trie[p].child[s[i] - 'a'] == 0) {
return -1;
}
p = trie[p].child[s[i] - 'a'];
}
return p;
}
int main(){
int n, m;
cin >> n;
for (int i = 1; i <= n; ++i) {
int k; cin >> k;
for (int j = 1; j <= k; ++j) {
string t; cin >> t;
insert(t, i);
}
}
cin >> m;
for (int i = 1; i <= m; ++i) {
string t; cin >> t;
int v = query(t);
if (v == -1) {
cout << endl;
continue;
}
if (trie[v].lst.empty()) {
cout << endl;
continue;
}
for (set<int>::iterator it = trie[v].lst.begin(); it != trie[v].lst.end(); it++) {
cout << *it << ' ';
}
cout << endl;
}
return 0;
}
rt 样例过了