#include<iostream>
#include<algorithm>
using namespace std;
int N,M,T,izlaz[5],x=0,k=0;
long long raz[75000],A[75000],B[75000],nzdniza;
int NZD(int a,int b){
	if(b==0)return a;
	else return NZD(b,a%b);
}
int main(){
	cin.tie(NULL);
    cout.tie(NULL);
	cin>>T;
	for(int i=0;i<T;i++){
		cin>>N>>M;
		for(int j=0;j<N;j++)cin>>A[j];
		for(int j=0;j<M;j++)cin>>B[j];
		sort(A,A+N);
		sort(B,B+M);
		k=0;
		if(N==2)nzdniza=abs(A[0]-A[1]);
		else {
			for(int j=0;j<N-1;j++){
				raz[k]=abs(A[j]-A[j+1]);
				k++;
			}
			k--;
			nzdniza=NZD(raz[0],raz[1]);
		for(int j=2;j<k;j++)nzdniza=NZD(raz[i],nzdniza);
	}
		if(nzdniza==1)izlaz[i]=0;
		else {
			izlaz[i]=1;
			for(int j=0;j<M;j++){
				if((B[j]-A[0])%nzdniza==0)izlaz[i]=0;
		}
		}
	}
	for(int i=0;i<T;i++)cout<<izlaz[i]<<endl;
	return 0;
}