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