/* Divanshu Garg */

#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <climits>
#include <cctype>
#include <cassert>

using namespace std;

#define ull unsigned long long
#define ill long long int
#define pii pair<int,int>
#define pb(x) push_back(x)
#define F(i,a,n) for(int i=(a);i<(n);++i)
#define FD(i,a,n) for(int i=(a);i>=(n);--i)
#define FE(it,x) for(it=x.begin();it!=x.end();++it)
#define V(x) vector<x>
#define S(x) scanf("%d",&x)
#define Sl(x) scanf("%llu",&x)
#define M(x,i) memset(x,i,sizeof(x))
#define debug(i,sz,x) F(i,0,sz){cout<<x[i]<<" ";}cout<<endl
ill ABS(ill a) { if ( a < 0 ) return (-a); return a; }
#define fr first
#define se second

/* Relevant code begins here */

/* Input from file or online */

void input() {
#ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
#endif
}

/* Input opener ends */

vector<int> v[505];

int main() {
    

    int n; S(n);
    F(i,0,n) {
        int m; S(m);
        F(j,0,m) {
            int x; S(x);
            v[i].pb(x);
        }
        sort(v[i].begin(),v[i].end());
       // F(j,0,v[i].size()) cout << v[i][j] << " "; cout << endl;
    }

    int q; S(q);
    while ( q-- ) {
        int t, k; S(t); S(k);
        vector<int> a;
        F(i,0,k) {
            int x; S(x); a.pb(x);
        }
        sort(a.begin(),a.end());
     //   F(i,0,a.size()) cout << a[i] << " "; cout << endl;
        int ans = 0;
        F(i,0,n) {
            int matches = 0;

            int x1 = 0, x2 = 0;
            while ( x1 < v[i].size() && x2 < a.size() ) {
              //  cout << " -- " << x1 << " " << x2 << endl;
                if ( v[i][x1] == a[x2] ) {
                    matches++;
                    x1++; x2++;
                } else if ( v[i][x1] < a[x2] ) x1++;
                else x2++;
            }
        //    cout << matches << endl;

            if ( t == 1 && matches == k ) ans++;
            if ( t == 2 && matches > 0 ) ans++;
            if ( t == 3 && matches > 0 && matches < k ) ans++;
        }
        printf("%d\n", ans);
    }

    return 0;
}