#include <iostream>

using namespace std;

int main()
{
    int T,N[6],M[6];
    bool ok;
    cin>>T;
    long long int A[100][T+1], B[100][T+1], maxbr=0, razlika;

    for(int k=1;k<=T;k++)
    {
        cin>>N[k]>>M[k];
        for(int j=1;j<=N[k];j++)
        {
            cin>>A[j][k];
        }
        for(int j=1;j<=M[k];j++)
        {
            cin>>B[j][k];
        }
    }

    for(int k=1;k<=T;k++)
    {
        ok=true;
        for(int i=1;i<=N[k];i++)
        {
            for(int j=1;j<=N[k];j++)
            {
                if(A[i][k]==A[j][k] && i!=j)
                {
                    ok = false;
                }
            }
        }

    for(int i=1;i<=N[k];i++)
    {
        if(A[i][k]>maxbr)
        {
            maxbr=A[i][k];
        }
    }
    razlika=maxbr;
    for(int i=1;i<=N[k];i++)
    {
        for(int j=1;j<=N[k];j++)
        {
            if(abs(A[i][k]-A[j][k])<razlika && i!=j)
            {
                razlika = abs(A[i][k]-A[j][k]);
            }
        }
    }
        for(int i=1;i<=N[k];i++)
        {
            for(int j=1;j<=N[k];j++)
            {
                if(abs(A[i][k] - A[j][k]) % razlika != 0)
                {
                    ok = false;
                }
            }
        }

        for(int i=1;i<=N[k];i++)
        {
            for(int j=1;j<=M[k];j++)
            {
                if(A[i][k]==B[j][k])
                {
                    ok=false;
                }
            }
        }

        for(int i=1;i<=M[k];i++)
        {
            for(int j=1;j<=N[k];j++)
            {
                if(abs(B[i][k]-A[j][k])%razlika == 0)
                {
                    ok=false;
                }
            }
        }

    if(ok==true)
    {
        cout<<"1 \n";
    }
    else
    {
        cout<<"0 \n";
    }
    }
    return 0;
}