#include <bits/stdc++.h>

using namespace std;

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

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

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

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

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

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

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

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

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

    return 0;
}