#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int minimum(int n,int a[]){
    int m=a[0];
    for(int i=1;i<n;i++)
        if(a[i]<m)
            m=a[i];
    return m;
}
int maximum(int n,int a[]){
    int m=a[0];
    for(int i=1;i<n;i++)
        if(a[i]>m)
            m=a[i];
    return m;
}
int minRaz(int n,int a[]){
    int min=INT_MAX;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(i==j)
                continue;
            else
                if(abs(a[i]-a[j]<min))
                    min=abs(a[i]-a[j]);
    return min;
}
int main (){
    int t;
    scanf("%d",&t);
    int nm[t][2],rez[t],minn,mraz,maxn,minm,maxm,ind=0,ind1=0,ind2=0,c=0,r[t];
    for(int i=0;i<t;i++){
        scanf("%d%d",&nm[i][0],&nm[i][1]);
        int n[nm[i][0]],m[nm[i][1]];
        for(int j=0;j<nm[i][0];j++)
            scanf("%d",&n[j]);
        for(int k=0;k<nm[i][1];k++)
            scanf("%d",&m[k]);
        minn=minimum(nm[i][0],n);
        maxn=maximum(nm[i][0],n);
        minm=minimum(nm[i][1],m);
        maxm=maximum(nm[i][1],m);
        mraz=minRaz(nm[i][0],n);
        for(int l=minn;l<maxn+mraz;l=l+mraz)
            if(l==n[c])
                c++;
        if(c==nm[i][0]-1)
            ind=1;
        for(int o=minn;o>minm-mraz;o=o-mraz){
            int c1=0;
            if(o==m[c1]){
                r[i]=0;
                break;
                ind1=1;
            }
            if(o>m[c1])
                c1++;
        }
        if(ind1==0)
            for(int p=minn;p<maxm+mraz;p=p+mraz){
                int c2=0;
                if(p==m[c2]){
                    r[i]=0;
                    ind2=1;
                    break;
                }
                if(p>m[c2])
                    c2++;
            }
        if(ind==1 && ind1==0 && ind2==0)
            r[i]=1;
    }  
    for(int q=0;q<t;q++)
        printf("%d\n",r[q]);
    return 0;
}