#include <iostream>
#include <bits/stdc++.h>
using namespace std;

long long int rastojanjeMin(long long int a[],int n)
{
    long long int razlika=1000000000000000000;
    for(int i=0;i<n-1;i++)
    {
        if(abs(a[i+1]-a[i])<razlika)
            razlika=abs(a[i+1]-a[i]);
    }
    return razlika;
}
bool isArArray(long long int a[],int n)
{
    long long int d=rastojanjeMin(a,n);

    for(int i=0;i<n-1;i++)
    {
        if(abs(a[i+1]-a[i])%d!=0)
        {
            return false;
        }
    }
    return true;
}
bool sePreslikava(long long int a[], int n,long long int b[],int m)
{
    long long int d=rastojanjeMin(a,n);

    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            if(abs(a[i]-b[j])%d==0)
            {
              return true;
            }
    return false;
}

bool istiEl(long long int a[],long long int b[],int n,int m)
{
    for(int i=0;i<n;i++)

        for(int j=0;j<m;j++)
        {
            if(a[i]==b[j])
             {
                return true;
             }
        }
    return false;
}

bool resenje(long long int a[], long long int b[], int n,  int m)
{
    if(istiEl(a,b,n,m))
    {
        return false;
    }
    else
    {
        if(!isArArray(a,n))
            return false;
        else
        {
            if(sePreslikava(a,n,b,m))
                return false;
            else
                return true;
        }
    }
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int t;
    cin>>t;

    bool sol[5]={false};

    for(int it=0;it<t;it++)
    {
        int n=0,m=0;
        long long int a[75000]={0};
        long long int b[75000]={0};
        cin>>n>>m;
        for(int j=0;j<n;j++)
            cin>>a[j];
        for(int k=0;k<m;k++)
            cin>>b[k];

        sort(a,a+n);
        sol[it]=resenje(a,b,n,m);
    }
    for(int i=0;i<t;i++)
    {
        if(sol[i]==false)
            cout<<"0"<<endl;
        else
            cout<<"1"<<endl;
    }
    return 0;
}