#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int T;
    cin >> T;
    int nizt[T]; //solution array holder

    for (int i = 0; i < T; i++) {
        long int n, m, x, ima = 0;
        cin >> n >> m;
        long long nizn[n], nizm[m];

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

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

        sort(nizn, nizn + n);
        sort(nizm, nizm + m);
        x = nizn[1] - nizn[0];

        for (int k = 2; k < n; k++) {
            if ((nizn[k] - nizn[k - 1]) < x) {
                x = nizn[k + 1] - nizn[k];
            }
            else if ((nizn[k] - nizn[k - 1]) % x != 0) {
                ima = 1;
            }
        }



        for (int k = 0; k < m; k++) {
            if ((nizm[k] - nizn[0]) % x == 0) {
                ima = 1;
            }
        }

        if (ima != 1) {
            nizt[i] = 1;
        }
        else {
            nizt[i] = 0;
        }

    }

    for (int k = 0; k < T; k++) {
        cout << nizt[k] << endl;
    }
}