/************************************************** WhatTheFua Anan Schuett arnan_s@msn.com **************************************************/ #define BK back() #define BL for(int K = 1; K <= T; K++) #define F first #define INF 2147483647LL #define LNF 8000000000000000000LL #define P107 1000000007LL #define P109 1000000009LL #define PB push_back #define PF push_front #define I insert #define E erase #define S second #define SZ size() #define IT iterator #define db double #define ll long long int #define mp make_pair #include <algorithm> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <deque> #include <functional> #include <iostream> #include <list> #include <map> #include <queue> #include <set> #include <stack> #include <string> #include <vector> using namespace std; struct file { set<int> A; }; file inp[310]; vector<int> Q; int n; int all() { int res = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < Q.size(); j++) { if(inp[i].A.find(Q[j]) == inp[i].A.end()) { goto out; } } res++; out:; } return res; } int any() { int res = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < Q.size(); j++) { if(inp[i].A.find(Q[j]) != inp[i].A.end()) { res++; break; } } } return res; } int main() { int m,x,q,t,i,j,k,res; cin >> n; for(i = 0; i < n; i++) { cin >> m; for(j = 0; j < m; j++) { cin >> x; inp[i].A.I(x); } } cin >> q; for(i = 0; i < q; i++) { cin >> t >> m; Q.clear(); for(j = 0; j < m; j++) { cin >> x; Q.PB(x); } if(t == 1) { cout << all() << endl; } else if(t == 2) { cout << any() << endl; } else { cout << any() - all() << endl; } } }