#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;
		}
	}
}