#include <iostream>
#define MAXN 75001

using namespace std;

long long da[MAXN];
long long ne[MAXN];
int delioci[MAXN];

int main()
{
	int t,n,m;
	cin>>t;
	long long min=1000000000000000001,min_pom;
	int indeks_min;
	int pom=0;
	int kraj=0;
	bool x=false;
	long long spec_delioc;
	for(int i=0;i<t;i++)
	{
		pom=0;
		kraj=0;
		cin>>n>>m;
		for(int j=0;j<n;j++)
		{
			cin>>da[j];
			if(da[j]<min) 
			{
				min_pom=min;
				min=da[j];
				indeks_min=j;
			}
		}
		if(min_pom==1000000000000000001) 
		{
			for(int j=0;j<n;j++)
				if(da[j]<min_pom && indeks_min!=j) 
					min_pom=da[j];
		}
		for(int j=1;j<=min_pom/2;j++)
		{
			if(min_pom%j==0) 
			{
				delioci[pom]=j;
				pom++;
			}
		}
		for(int j=0;j<pom;j++)
		{
			for(int q=0;q<n;q++)
			{
				if(da[q]%delioci[j]!=0) q=n;
				else if(q=n-1) 
				{
					x=true;
					spec_delioc=delioci[j];
				}
			}
		}
		if(x==true)
		{
			for(int j=0;j<m;j++)
			{
				cin>>ne[j];
				if((ne[j]-min)%spec_delioc==0) x=false;
			}
			if(x==true) cout<<1;
			else cout<<0;
		}
		else
		{
			for(int j=0;j<m;j++)
			{
				cin>>ne[j];
			}
			cout<<0<<endl;
		}
		min=1000000000000000001;
	}
	return 0;
}