#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;

long long nzd(long long niz[],long long i,long long n)
{
    if(n==0)return 0;
    else if(n==1)return niz[i];
    else if(n==2)return __gcd(niz[i],niz[i+1]);
    else return __gcd(nzd(niz,i,n/2),nzd(niz,n/2,n-n/2));
}

int main()
{
    long long t,n,m,p,o,nz,r=1;
    cin>>t;
    long long rez[t];
    for(long long i=0;i<t;i++)
        {
            cin>>n>>m;
            long long niz[n],miz[m];
            cin>>o;
            niz[0]=0;
            for(long long i=1;i<n;i++)
                {
                    cin>>p;
                    niz[i]=abs(p-o);
                }
            nz=nzd(niz,0,n);
            for(long long i=0;i<m;i++)
                {
                    cin>>miz[i];
                    if(abs(miz[i]-o)%nz==0)r=0;
                }
            rez[i]=r;
            r=1;
        }
    for(long long i=0;i<t;i++)
        {
            cout<<rez[i]<<endl;
        }
    return 0;
}