#include <bits/stdc++.h>

using namespace std;

int t;

int nzd(unsigned long long int a,unsigned long long int b)
{
	if(a%b==0)
	{
		return b;
	}
	else
	{
		return nzd(b%a,a);
	}
}

int nzdNiz(unsigned long long int niz[],int dn) //dn duzina niza
{
	int pv;
	int dd=dn-1;
	unsigned long long int nizd[dd];
	if(dn==2)
	{
		pv=nzd(niz[0],niz[1]);
		return pv;
	}
	else
	{
		for(int i=0;i<dd;i++)
		{
			nizd[i]=nzd(niz[0],niz[i+1]);
		}
		return nzdNiz(nizd,dd);
	}
}

int nekoIme(int n,int m)
{
    cin>>n>>m;

    unsigned long long int nn[n],nm[m];

    for(int i=0;i<n;i++)
    {
        cin>>nn[i];
    }
    for(int j=0;j<m;j++)
    {
        cin>>nm[j];
    }

    sort(nn,nn+n);
    sort(nm,nm+m);
    unsigned long long int nnn[n-1],nnm[m-1];

    for(int p=0;p<n-1;p++)
    {
        nnn[p]=nn[p+1]-nn[p];
    }
    for(int q=0;q<m-1;q++)
    {
        nnm[q]=nm[q+1]-nm[q];
    }

    unsigned long long int nzdp,nzdd;
    if(n>2)
    {
        nzdp=nzdNiz(nnn,n-1);
    }
    else
    {
        nzdp=nnn[0];
    }

    if(m>2)
    {
        nzdd=nzdNiz(nnm,m-1);
    }
    else
    {
        nzdd=nnm[0];
    }

    if(nzd(nzdp,nzdd)==1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    cin>>t;
    int nizRez[t];
    int n,m;
    for(int o=0;o<t;o++)
    {
        nizRez[o]=nekoIme(n,m);
    }
    for(int u=0;u<t;u++)
    {
        cout<<nizRez[u]<<endl;
    }

    return 0;
}