#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>

int main()
{
    bool deljivo=true;
    int t;
    scanf("%d",&t);
    if(t<1 || t>5)
    {
        return 0;
    }
    int jedanilinula[t];
    for(int i=0;i<t;i++)
    {
        long long int n,m;
        scanf("%d %d",&n,&m);
        long long int b[n],c[m];
        for(int j=0;j<n;j++)
        {
            scanf("%lld",&b[j]);
        }
        for(int j=0;j<m;j++)
        {
            scanf("%lld",&c[j]);
        }
        for(int j=0;j<n;j++)
        {
            for(int p=j+1;p<n;p++)
            {
                if(b[j]>b[p])
                {
                    int x;
                    x=b[j];
                    b[j]=b[p];
                    b[p]=x;
                }
            }
        }
        for(int j=0;j<m;j++)
        {
            for(int p=j+1;p<m;p++)
            {
                if(c[j]>c[p])
                {
                    int x;
                    x=c[j];
                    c[j]=c[p];
                    c[p]=x;
                }
            }
        }
        int k=0,y=2,rezultat=0;
        while(y<=(b[n-1]-b[0]) && rezultat==0)
        {
            int s=1;
            deljivo=true;
            while(s<n && deljivo)
            {
                if((b[s]-b[s-1])%y!=0)
                {
                    deljivo=false;
                }
                s++;
            }
            int v=0;
            while(v<m && deljivo)
            {
                if((c[v]-b[0])%y==0)
                {
                    deljivo=false;
                }
                v++;
            }
            if(deljivo)
            {
                rezultat=1;
            }
            else
            {
                y++;
                while(y>3 && (y-1)%6!=0 && (y+1)%6!=0)
                {
                    y++;
                }
            }
        }
        jedanilinula[i]=rezultat;
    }
    for(int i=0;i<t;i++)
    {
        printf("%d\n",jedanilinula[i]);
    }
    return 0;
}