#include <iostream>

using namespace std;
long long nzd(long long a,long long b){
    if(b==0) return a;
    a=a%b;
    return nzd(b,a);
}
int main()
{
    long long N;
    int M;
    int ljudi;
    cin>>ljudi;
    for(int i=0;i<ljudi;i++){
        cin>>N;
        cin>>M;
        long long A[N];
        long long B[M];
        long long prvi;
        cin>>prvi;
        long long b;
        for(int j=0;j<N;j++){
            cin>>b;
            A[j]=b-prvi;
            if(A[j]<0) A[j]*=-1;
            prvi=b;
        }
        for(int j=0;j<M;j++){
            cin>>B[j];
        }
        long long nzd1,nzd2,nzdrez;
        nzd1=nzd(A[0],A[1]);
        for(int j=1;j<N-1;j++){
            nzd2=nzd(A[j],A[j+1]);
            nzdrez=nzd(nzd1,nzd2);
        }
        if(nzdrez!=1){
            bool radi=true;
            long long k=A[0]%nzdrez;
            for(int j=0;j<M;j++){
                if((B[j]-k)%nzdrez==0) radi=false;
            }
            if(radi) cout<<1<<endl;
            else cout<<0<<endl;
        }
        else{
            cout<<0<<endl;
        }
    }
    return 0;
}