#include <iostream>
#include <cmath>

using namespace std;

int NZD(int x,int y){
	if(y==0)
	return x;
	return NZD(y,x%y);
}

int main(){
	int t,n,m;
	cin>>t;
	int r[t];
	for(int i=0;i<t;i++){
		cin>>n>>m;
	int a[n];
	int raz_a[n-1];
	int b[m];
		r[i]=1;
		for(int i1=0;i1<n;i1++){
			cin>>a[i1];
		}
		for(int i1=0;i1<m;i1++){
			cin>>b[i1];
		}
		for(int i1=0;i1<n-1;i1++){
			raz_a[i1]=abs(a[i1+1]-a[i1]);
		}
		if(n>2){
		int x=raz_a[0];
		int y=raz_a[1];
		for(int i1=2;i1<n-1;i1++){
			x=NZD(max(x,y),min(x,y));
			y=raz_a[i1];
		}
		x=NZD(max(x,y),min(x,y));
		cout<<x<<endl;
	for(int i1=0;i1<m;i1++){
			if(abs(b[i1]-a[0])%x==0){
				r[i]=0;
				break;
			}
		}
		}
		else{
			for(int i1=0;i1<m;i1++){
			if(abs(b[i1]-a[0])%raz_a[0]==0){
				r[i]=0;
				break;
			}
		}
		}
	for(int i=0;i<t;i++){
		cout<<r[i]<<endl;
	}
	}
}