#include <iostream>
#include<algorithm>
using namespace std;
int NZD(int a, int b)
{
    if (a == 0)
        return b;
    return NZD(b % a, a);
}

int pronadjiNZD(int niz[],int n)
{
    int rezultat = niz[1];
    for (int i = 2; i < n; i++)
    {
        rezultat = NZD(niz[i], rezultat);

        if(rezultat == 1)
        {
           return 1;
        }
    }
    return rezultat;
}
int main()
{
    bool prva,druga;
    int T;
    cin>>T;
    int rez[T];
    int N,M;

    for(int k=0;k<T;k++){
    cin>>N>>M;
    int p[N];
    int o[M];
    for(int i = 0;i<N;i++){
        cin>>p[i];
    }
    for(int i = 0;i<M;i++){
        cin>>o[i];
    }
    prva = false;
    druga = true;
    sort(p,p+N);
    for(int i = 1;i<N;i++){
        p[i] = p[i]-p[0];
    }
    int nzd = pronadjiNZD(p,N);
    if(nzd>1)prva=true;
    for(int i= 0;i<M;i++){
        if((o[i]-p[0])%nzd==0){druga = false;break;}
    }
    if(prva==true&&druga==true) rez[k]=1;
    else rez[k]=0;
    }
    for(int i =0;i<T;i++){
        cout<<rez[i]<<endl;
    }
}