#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> pii; double PI = acos(-1); double EPS = 1e-7; int INF = 1000000000; LL INFLL = 1000000000000000000LL; #define fi first #define se second #define mp make_pair #define pb push_back #define input(in) freopen(in,"r",stdin) #define output(out) freopen(out,"w",stdout) #define MIN(a, b) (a) = min((a), (b)) #define MAX(a, b) (a) = max((a), (b)) #define RESET(a, b) memset(a,b,sizeof(a)) #define ALL(a) (a).begin(), (a).end() #define SIZE(a) (int)a.size() #define SORT(a) sort(ALL(a)) #define UNIQUE(a) (a).erase( unique( ALL(a) ), (a).end() ) #define FOR(a, b, c) for (int (a)=(b); (a)<=(c); (a)++) #define FORD(a, b, c) for (int (a)=(b); (a)>=(c); (a)--) #define FORIT(a, b) for (__typeof((b).begin()) a=(b).begin(); a!=(b).end(); a++) int mx[8] = {-1,1,0,0,-1,-1,1,1}; int my[8] = {0,0,-1,1,-1,1,-1,1}; // ----- // unordered_map<int,int> cnt[305]; unordered_map<int,int> cur; int main() { int n; scanf("%d",&n); FOR(a,0,n-1) { int x; scanf("%d",&x); FOR(b,0,x-1) { int p; scanf("%d",&p); cnt[a][p]++; } } int q; scanf("%d",&q); while(q--) { int t; scanf("%d",&t); int x,k; scanf("%d",&x); k = x; cur.clear(); while(x--) { int p; scanf("%d",&p); cur[p]++; } if (t == 1) { int ans = 0; FOR(a,0,n-1) { int contain = 0; FORIT(it,cur) { int b = (*it).fi; if (cnt[a].count(b)) contain += min(cnt[a][b],cur[b]); } if (contain == k) ans++; } cout << ans << endl; } else if (t == 2) { int ans = 0; FOR(a,0,n-1) { int contain = 0; FORIT(it,cur) { int b = (*it).fi; if (cnt[a].count(b)) contain += min(cnt[a][b],cur[b]); } if (1<=contain) ans++; } cout << ans << endl; } else if (t == 3) { int ans = 0; FOR(a,0,n-1) { int contain = 0; FORIT(it,cur) { int b = (*it).fi; if (cnt[a].count(b)) contain += min(cnt[a][b],cur[b]); } if (1<=contain && contain <k) ans++; } cout << ans << endl; } } }