#include<bits/stdc++.h>
using namespace std;
long long NZD(long long a, long long b)
{
   if (b==0)
   return a;
   return NZD(b, a%b);
}
long long NZDN(long long a[],int n)
{
    for(int i=1;i<n;i++)
        a[i]=NZD(a[i],a[i-1]);
    return a[n-1];
}
void funkcija(long long a[],int n,long long b[],int m,bool p)
{
    long long razA[n-1];
    for(int l=0;l<n-1;l++)
        razA[l]=abs(a[l]-a[l+1]);
    long long nz=NZDN(razA,n-1);
    if(nz!=1)
        for(int i=0;i<m;i++)
        {
            if((a[0]-b[i])%nz==0)
                p=true;
        }
    else p=true;
    if(p) cout<<0<<endl;
    else cout<<1<<endl;
}
int main()
{
    int T;
    cin>>T;
    for(int i=0;i<T;i++)
    {
        int n,m;
        cin>>n>>m;
        bool p=false;
        long long a[n];
        long long b[m];
        for(int j=0;j<n;j++)
            cin>>a[j];
        for(int k=0;k<m;k++)
            cin>>b[k];
        if(m==0) p=true;
        funkcija(a,n,b,m,p);
    }
    return 0;
}