#include <bits/stdc++.h>

using namespace std;

vector<long long> a;
vector<long long> b;

vector<long long> c;

vector<int> rez;

long long nzd2(long long a, long long b)
{
    if (a == 0)
        return b;
    return nzd2(b % a, a);
}

long long nnzd(vector<long long> arr, long long n)
{
    long long result = arr[0];
    for (int i = 1; i < n; i++)
    {
        result = nzd2(arr[i], result);

        if(result == 1)
        {
           return 1;
        }
    }
    return result;
}

int main()
{

    int t;
    cin >> t;

    for(int i = 0; i < t; i++)
    {
        int n;
        int m;

        cin >> n;
        cin >> m;

        for(int i = 0; i < n; i++)
        {
            long long s1;
            cin >> s1;
            a.push_back(s1);
        }
        for(int i = 0; i < m; i++)
        {
            long long s2;
            cin >> s2;
            b.push_back(s2);
        }

        sort(a.begin(), a.end());
        sort(b.begin(), b.end());

        for(int i = 0; i < n - 1; i++)
        {
            c.push_back(a[i + 1] - a[i]);
        }

        sort(c.begin(), c.end());

        long long x = nnzd(c, c.size());

        bool moze = true;

        for(int i = 0; i < m; i++)
        {
            if((b[i] % x) == (a[0] % x))
            {
                moze = false;
                break;
            }
        }

        if(moze)
        {
            rez.push_back(1);
        }
        else
        {
            rez.push_back(0);
        }

        a.clear();
        b.clear();
        c.clear();

        moze = true;
    }

    for(int i = 0; i < t; i++)
    {
        cout << rez[i] << '\n';
    }

    return 0;
}