#include <bits/stdc++.h>

using namespace std;

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

int ImaSmisla()
{
    int n, m;
    cin >> n >> m;
    long long a[n], b[m], d[n-2];

    if(n == 2)
    {
        cin >> a[0] >> a[1];
        for(int i = 0; i < m; i++)
        {
            cin >> b[i];
        }
        sort(a, a + n);
        sort(b, b + m);

        a[1] += -a[0];
        for(int i = 0; i < m; i++)
        {
            b[i] += -a[0];
        }
        a[0] = 0;

        if(a[1] == 1)
            return 0;

        for(int i = 0; i < m; i++)
        {
            if(b[i] % a[1] == 0)
                return 0;
        }


        return 1;
    }

    for(int i = 0; i < n; i++)
    {
        cin >> a[i];
    }

    for(int i = 0; i < m; i++)
    {
        cin >> b[i];
    }

    sort(a, a + n);
    sort(b, b + m);

    for(int i = 1; i < n; i++)
    {
        a[i] += -a[0];
    }
    for(int i = 0; i < m; i++)
    {
        b[i] += -a[0];
    }
    a[0] = 0;

    for(int i = 1; i < n-1; i++)
    {
        d[i-1] =(NZDE(a[i], a[i+1]));
    }

    sort(d, d+(n-2));

    if(d[0] == 1)
        return 0;

    for(int i = 1; i < n; i++)
    {
        if(a[i] % d[0] != 0)
            return 0;
    }

    for(int i = 0; i < m; i++)
    {
        if(b[i] % d[0] == 0)
            return 0;
    }

    return 1;
}

int main()
{
    int t;

    cin >> t;
    int res[t];

    for(int i = 0; i < t; i++)
    {
        res[i] = ImaSmisla();
    }

    for(int i = 0; i < t; i++)
    {
        cout << res[i] << endl;
    }
    return 0;
}