#include<iostream> #include<cstdio> #include<string> #include<set> using std::cin; using std::set; using std::string; constint N = 5e5 + 10; int n, m; int idx, tr[N][26]; set<int> v[N]; voidinsert(string str, int id) { int p = 0; for (int i = 0; i < str.size(); i++) { int t = str[i] - 'a'; if (!tr[p][t]) tr[p][t] = ++idx; p = tr[p][t]; } v[p].insert(id); } voidquery(string str) { int p = 0; for (int i = 0; i < str.size(); i++) { int t = str[i] - 'a'; if (!tr[p][t]) return; p = tr[p][t]; } for (auto i : v[p]) printf("%d ", i); } intmain() { scanf("%d", &n); for (int i = 1, a; i <= n; i++) { scanf("%d", &a); while (a--) { string str; cin >> str; insert(str, i); } } scanf("%d", &m); while (m--) { string str; cin >> str; query(str); puts(""); } return0; }