#include <stdio.h>
#include <stdlib.h>
void zameni(int *a,int x,int y){
int pom;
 pom=*(a+x);
 *(a+x)=*(a+y);
 *(a+y)=pom;
}
void quicksort(int *a, int levi, int desni)
{
  int pivotpozicija;
  int i,s,pivot;
  if(levi >= desni)
    return;
  s = (levi+desni)/2;
  pivot= a[s];
  zameni( a, levi, s);
  pivotpozicija=levi;
  for(i=levi+1; i<= desni; i++)
  if( a[i] < a[levi] )
    zameni( a, ++pivotpozicija, i );
  zameni( a, levi, pivotpozicija);
  quicksort(a, levi, pivotpozicija-1);
  quicksort(a, pivotpozicija+1, desni );
}
int abs(int n)
{
  if(n>=0) return n;
  else return 0-n;
}
int* ucitajniz(int n)
{
  int* b=(int*)malloc(n*sizeof(int));
  for(int i=0;i<n;i++)
    scanf("%d", &b[i]);
  return b;
}
int main(void)
{
  int t,i,j,k;
  scanf("%d", &t);
  int* res=(int*)malloc(t*sizeof(int));
  for(i=0;i<t;i++)
  {
    res[i]=1;
    int n,m;
    scanf("%d%d", &n, &m);
    int* a=ucitajniz(n);
    int* b=ucitajniz(m);
    int* raza=(int*)malloc((n-1)*sizeof(int));
    quicksort(a,0,n-1);
    raza[0]=a[1]-a[0];
    int min=raza[0];
    for(j=1;j<n-1;j++)
    {
      raza[j]=a[j+1]-a[j];
      if(raza[j]<min) min=raza[j];
    }
    for(j=0;j<n-1;j++)
    {
      if(raza[j]%min)
      {
        res[i]=0;
        break;
      }
    }
    if(res[i])
    {
      for(j=0;j<m;j++)
        for(k=0;k<n;k++)
          if((b[j]-a[k])%min==0)
          {
            res[i]=0;
            break;
          }
    }  
    free(a);
    a=NULL;
    free(b);
    b=NULL;
    free(raza);
    raza=NULL;
  }
  for(i=0;i<t;i++)
    printf("%d\n", res[i]);
  free(res);
  res=NULL;
}