#include <iostream>
#include <climits>
using namespace std;

int main()
{
    int T;
    cin >> T;
    int ispis[T];
    for (int i = 0; i < T; i++)
    {
        ispis[i] = 0;
        int M,N;
        long long D = 0;
        cin >> N >> M;
        long long prihvaceno[N];
        long long odbijeno[M];
        for(int j = 0; j < N; j++) cin >>prihvaceno[j];
        for(int j = 0; j < M; j++) cin >>odbijeno[j];
        long long m1, m2;
        m1 = LLONG_MAX;
        m2 = LLONG_MAX;
        for (int j = 0; j < N; j++)
        {
            if(prihvaceno[j] < m2) {
                if(prihvaceno[j] < m1) {
                    m2 = m1;
                    m1 = prihvaceno[j];
                } else m2 = prihvaceno[j];
            }
            D = m2 - m1;
        }
        for(long long x = D; x > 1; x--) {
            bool nastavi = 1;
            long long ostatak = m1 % x;
            for(long long j = 0; j < N; j++) {
                if(prihvaceno[j] % x == ostatak)  continue;
                else {
                    nastavi = 0;
                    break;
                }
            }
            if(!nastavi) break;
            for(long long j = 0; j < M; j++) {
                if(odbijeno[j] % x != ostatak)  continue;
                else {
                    nastavi = 0;
                    break;
                }
            }
            if(nastavi) ispis[i] = 1;
        }
    }
    for(int i = 0; i < T; i++) cout << ispis[i] << endl;
    return 0;
}