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

long long uporedi (long long a, long long b) {
   return a>b;  /*ovo je da se uporede*/
}

int main()
{
    long long t;
    scanf("%lld",&t);
    for(long long i=0; i<t; i++)
    {
        long long n,m;
        scanf("%lld %lld",&n,&m);
        long long nizPrihvacenih[n];
        long long nizNeprihvacenih[m];
        for(long long j=0; j<n; j++)
        {
            scanf("%lld",&nizPrihvacenih[j]);
        }
        for(long long k=0; k<m; k++)
        {
            scanf("%lld",&nizNeprihvacenih[k]);
        }
        long long trenutniInterval, trenutnaRazlika;
        long long imaResenje=1;
        qsort(nizPrihvacenih,n,sizeof(long long),uporedi);/*ovo je da se poredjaju*/
        trenutniInterval=nizPrihvacenih[1]-nizPrihvacenih[0];
        for(long long l=1; l<n-1; l++)
        {
            trenutnaRazlika=nizPrihvacenih[l+1]-nizPrihvacenih[l];
            if(trenutnaRazlika>trenutniInterval)
            {
                if(trenutnaRazlika%trenutniInterval==0)
                {

                }
                else
                {
                    imaResenje=0;
                    printf("0\n"); break;
                }
            }
            else if(trenutnaRazlika<trenutniInterval)
            {
                if(trenutniInterval%trenutnaRazlika==0)
                {
                    trenutniInterval=trenutnaRazlika;
                }
                else
                {
                    imaResenje=0;
                    printf("0\n"); break;
                }
            }
        }
        if(imaResenje)
        {
            long long pomocko=nizPrihvacenih[0]%trenutniInterval;
            for(long long o=0; o<m; o++)
            {
                if(nizNeprihvacenih[o]%trenutniInterval==pomocko)
                {
                    imaResenje=0;
                    printf("0\n"); break;
                }
            }
            if(imaResenje==1)
            {
                printf("1\n");
            }
        }
    }
}