#include <cstdio>

using namespace std;

void viaribleSwitch(long long a[], long long i, long long j){
	long long pom;
	pom=a[i];
	a[i]=a[j];
	a[j]=pom;
}

void quickSort(long long a[], long long l, long long d){
	long long i, k;
	if(l>=d) return;
	viaribleSwitch(a, l, (l+d)/2);
	k=l;
	for(i=l+1;i<=d;i++){
		if(a[i]<a[l]) viaribleSwitch(a, ++k, i);
	}
	viaribleSwitch(a,l,k);
	quickSort(a,l,(k-1));
	quickSort(a,k+1,d);
}

int main(){ 
	long long t; 
	scanf("%lld", &t); 
	for(int i = 0 ; i < t ; i++){
	long long n, m; 
	scanf("%lld%lld", &n, &m);
	long long a[n], b[m]; 
	for(int i = 0 ; i < n ; i++){
		scanf("%lld", &a[i]); 
	} 
	for(int j = 0 ; j < m ; j++){
		scanf("%lld", &b[j]); 
	}
	bool DaLi = true; 
	// Tacne zalbe
	quickSort(a, 0, n-1); 
	long long x = a[1]-a[0], y = 0; 
	for(int i = 1 ; i < n-1 ; i++){
		y = a[i+1]-a[i]; 
		while(y > 0) y-= x;
		if(y != 0){
			DaLi = false; 
			break; 
		}
	}
	// Netacne zalbe
	if(DaLi){
		int d = a[0]%x; 
		for(int i = 0 ; i < m ; i++){
			if(b[i]%x == d){
				DaLi = false; 
				break; 
			}
		}
	}
	printf("%d\n", DaLi); 
}
	return 0;
}