#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int x();

int main()
{
	int t,i,*takmicari;
	scanf("%d",&t);
	takmicari=(int*)malloc(t*sizeof(int));
	for(i=0;i<t;i++)
	{
		*(takmicari+i)=x();		
	}
	for(i=0;i<t;i++)
	{
		printf("%d",*(takmicari+i));	
	}
return 0;
}
int x()
{
	int m,n,*prihvacene,*neprihvacene,i,j,x=2,nzd=-1,ostatak,temp,temp1,minrazlika,razlika;

	scanf("%d",&n);
	scanf("%d",&m);
	prihvacene=(int*)malloc(n*sizeof(int));
	neprihvacene=(int*)malloc(m*sizeof(int));
	for(i=0;i<n;i++)
	{
		scanf("%d",(prihvacene+i));
	}
	for(i=0;i<m;i++)
	{
		scanf("%d",(neprihvacene+i));
	}
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(*(prihvacene+i)>*(prihvacene+j))
			{
				temp=*(prihvacene+i);
				*(prihvacene+i)=*(prihvacene+j);
				*(prihvacene+j)=temp;
			}
		}
	}
	for(i=0;i<m-1;i++)
	{
		for(j=i+1;j<m;j++)
		{
			if(*(neprihvacene+i)>*(neprihvacene+j))
			{
				temp=*(neprihvacene+i);
				*(neprihvacene+i)=*(neprihvacene+j);
				*(neprihvacene+j)=temp;
			}
		}
	}
	minrazlika=*(prihvacene+1)-*(prihvacene+0);
	for(i=0;i<n-1;i++)
	{
		razlika=*(prihvacene+i+1)-*(prihvacene+i);
		if(minrazlika>razlika)
			minrazlika=razlika;
	}
	if(n<3)
	{
			for(i=0;i<m;i++)
			{
				if(*(neprihvacene+i)==*(prihvacene+0) || *(neprihvacene+i)==*(prihvacene+1))
					x=0;
				else
					x=1;
					
			}
	}
	else
	{
		for(i=0;i<n;i++)
		{
			if(x>0)
			{
				if(*(prihvacene+i)==1+((*(prihvacene+i)-1))/minrazlika*minrazlika)
					x=1;
				else
					x=0;
			}
		}
	for(i=0;i<m;i++)
	{
		if(x>0)
		{
			if((*(neprihvacene+i)-1)%minrazlika==0 || *(neprihvacene+i)==1)
				x=0;
		}
	}
	}
	return x;
}