#include <bits/stdc++.h>

using namespace std;

bool u_nizu(long long x, long long a1, long long d)
{
    long long razlika = x-a1;
    long long ostatak = razlika % d;
    return ostatak == 0;
}

int main() {
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);

    long long t;
    cin >> t;
    short tacnost_glasine[t];

    for(int i=0; i < t; i++)
    {
        tacnost_glasine[i] = 1;
        long long n, m;
        cin >> n >> m;

        long long Ai[n];
        long long Bi[m];

        long long najmanji_a = LLONG_MAX;
        long long najmanji_a1 = LLONG_MAX;
        for(int j=0; j < n; j++)
        {
            cin >> Ai[j];
            if(Ai[j] < najmanji_a)
            {
                najmanji_a1 = najmanji_a;
                najmanji_a = Ai[j];
            }
            else if (Ai[j] << najmanji_a1 && Ai[j] != najmanji_a)
            {
                najmanji_a1 = Ai[j];
            }
        }
        long long d = najmanji_a1 - najmanji_a;

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

        for(int j = 0; j < n; j++)
        {
            if (!u_nizu(Ai[j], najmanji_a, d))
            {
                tacnost_glasine[i] = 0;
                break;
            }
        }

        for(int j = 0; j < m; j++)
        {
            if(u_nizu(Bi[j], najmanji_a, d))
            {
                tacnost_glasine[i] = 0;
                break;
            }
        }
    }

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

    return 0;
}