#include <bits/stdc++.h>
using namespace std;
unsigned long long FoundNZD(unsigned long long prvi,unsigned long long drugi)
{
    while (drugi != 0)
        {
        unsigned long long tmp = prvi;
        prvi = drugi;
        drugi = tmp % drugi;
        }
    return prvi;
}

int main()
{
    bool resenje = true;
    unsigned long long prvi , unos , nzd;
    short T;
    int a , b;
    scanf("%d",&T);
    for(int i =0;i<T;i++)
    {
        resenje = true;
        scanf("%d %d",&a, &b);
        unsigned long long razlikaA[a], razlikaB[b];
        scanf("%llu",&prvi);
        for(int i = 0; i<a-1;i++)
        {
            scanf("%llu",&unos);
            if(prvi > unos)
            razlikaA[i]= prvi - unos;
            else
            razlikaA[i]= unos - prvi;
        }
        for(int i = 0; i<b;i++)
        {
            scanf("%llu",&unos);
            if(prvi > unos)
            razlikaB[i]= prvi - unos;
            else
            razlikaB[i]= unos - prvi;
        }
        nzd=razlikaA[0];
        for(int i = 1; i<a-1;i++)
        {
            nzd = FoundNZD(nzd,razlikaA[i]);
        }
        for(int i = 0; i<b;i++)
        {
            if(razlikaB[i] % nzd == 0)
                resenje=false;
        }
        if(resenje)
            printf("1\n");
        else
            printf("0\n");
    }




    return 0;
}