#include<iostream>
using namespace std;

int nzd (int a, int b);

int main(){
	
	int t, n, m, s=0;
	
	int rez[t];
	
	cin>>t;
	
	for(int i=0; i<t; i++){
		
		cin>>n>>m;
		
		int a[n], b[m];
		
		for(int i=0; i<n; i++)
			cin>>a[i];
		
		for(int i=0; i<m; i++)
			cin>>b[i];
		
		
		int raz[n-1];
		for(int i=0; i<n-1; i++)
			raz[i]=a[i+1]-a[i];
		
		int nz[n-2];
		for(int i=0; i<n-1; i++)
			nz[i]=nzd(raz[i], raz[i+1]);
		
		
		int min=nz[0];
		for(int i=1; i<n-2; i++)
			if(min>nz[i])
				min=nz[i];
		
		for(int i=0; i<m; i++){
			if((b[i]-a[0])%min==0 || min==1){
				rez[s]=0;
				s++;
				i=m;
			}
			else if(i==m-1){
				rez[s]=1;
				s++;
			}
			
		}
		
	}
	
	for(int i=0; i<t; i++){
		cout<<rez[i]<<endl;
	}
	
}

int nzd (int a, int b)
{
    if (b==0) return a; 
    a=a%b;
    return nzd(b,a);
}