#include <bits/stdc++.h>

using namespace std;

struct node{
	int x,y,id;
	node(){}
	bool operator<(const node& b)const{
		return x<b.x;
	}
}a[10100];

vector<int> p[60000];
int n,k,m;
int f[60000],h[60000],re[10010];
int three[11];

int main(){
	scanf("%d%d",&n,&k);
	for (int i=1;i<=n;i++){
		scanf("%d",&a[i].x);
		int x,y;
		scanf("%d",&y);
		a[i].y=0;
		for (int j=1;j<=y;j++){
			scanf("%d",&x);
			a[i].y|=1<<x-1;
		}
		a[i].id=i;
	}
	sort(a+1,a+1+n);
	for (int i=1;i<=n;i++)
		re[a[i].id]=i;

	three[0]=1;
	for (int i=1;i<=10;i++) three[i]=three[i-1]*3;

	for (int j=0;j<three[k];j++){
		f[j]=h[j]=0;
		int now=j;
		for (int i=0;i<k;i++){
			int x=now%3;
			now/=3;
			if (x==2) continue;
			h[j]|=1<<i;
			f[j]|=x*(1<<i);
		}
	}

	for (int i=1;i<=n;i++){
		for (int j=0;j<three[k];j++){
			int x=f[j];
			int y=h[j];
			if ((a[i].y & y)==(x & y)) p[j].push_back(a[i].x);
		}
	}
	/*
	for (int i=0;i<three[k];i++){
		cout <<"!!"<<i<<" "<<f[i]<<" "<<h[i]<<" ";
		for (int j=0;j<p[i].size();j++) cout<<p[i][j]<<" ";
		cout<<endl;
	}
*/
	scanf("%d",&m);
	for (int ii=1;ii<=m;ii++){
		int x,y,id,mask=three[k]-1;
		scanf("%d",&id);
		scanf("%d",&y);
		for (int i=1;i<=y;i++){
			scanf("%d",&x);
			int bo=(a[re[id]].y>>(x-1) )&1;
			mask-=(2-bo)*three[x-1];
		}
		//cout << mask<<endl;
		int idx=upper_bound(p[mask].begin(),p[mask].end(),a[re[id]].x)-p[mask].begin();
		printf("%d\n",(int)p[mask].size()-idx+1);
		
	}
	return 0;
}
