#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

long long aps(long long x)
{
    if(x<0) return -x;
    return x;
}

long long nzd(long long a, long long b)
{
    a=aps(a);
    b=aps(b);
    if(a<b)
    {
        long long t=a;
        a=b;
        b=t;
    }
    if(b==0) return a;
    return nzd(b,a%b);
}


int main()
{
    int t;
    cin >> t;
    vector<int> zx;
    for(int qw=0;qw<t;qw++)
    {
        int n,m;
        cin >> n >> m;
        long long a,b,as;
        cin >> a;
        as=a;
        long long x=0;
        for(int i=1;i<n;i++)
        {
            cin >> a;
            x=nzd(x,a-as);
        }
        //cout << x << endl;
        bool nzm=true;
        for(int j=0;j<m;j++)
        {
            cin >> b;
            if((as-b)%x==0 && nzm==true)
            {
                zx.push_back(0);
                nzm=false;
            }
            if(j==m-1 && nzm==true) zx.push_back(1);
        }
        //cout << "*";
        //cout << endl;
    }
    for(int i=0;i<zx.size();i++) cout << zx[i] << endl;
    return 0;
}