#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
template<class T> T sqr(T x) {return x*x;}
#define pi acos(-1)
#define INF 100000000
#define debug(x) cerr<<#x"="<<(x)<<"\n";
#define foreach(it,v) for (__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)

bitset<500> g[251000];
int bs[5][51000][110];
vector<int> b[5][51000];
int n,m,tot;

int get(int x,int y) {
	tot++;
	g[tot]=g[x];
	g[tot][y]=1;
	return tot;
}

int main() {
	int tt;
	scanf("%d",&tt);
	while (tt--) {
		scanf("%d%d",&n,&m);
		for (int i=0;i<n;i++)
			for (int j=0;j<5;j++) {
				int x;
				scanf("%d",&x);
				b[j][x].push_back(i);
			}
		tot=0;
		for (int i=0;i<5;i++)
			for (int j=1;j<=50000;j++) {
				for (int u=0;u<100;u++) bs[i][j][u]=bs[i][j-1][u];
				for (int k=0;k<b[i][j].size();k++) {
					int x=b[i][j][k];
					bs[i][j][x/500]=get(bs[i][j][x/500],x%500);
				}
			}
		int ans=0,q;
		scanf("%d",&q);
		while (q--) {
			int ask[5];
			for (int i=0;i<5;i++) {
				scanf("%d",&ask[i]);
				ask[i]^=ans;
			}
			ans=0;
			for (int u=0;u<100;u++) {
				ans+=(g[bs[0][ask[0]][u]] & g[bs[1][ask[1]][u]] & g[bs[2][ask[2]][u]] & g[bs[3][ask[3]][u]] & g[bs[4][ask[4]][u]]).count();
			}
			printf("%d\n",ans);
		}
		for (int i=0;i<5;i++)
			for (int j=1;j<=50000;j++)
				b[i][j].clear();
	}
}
