#include <bits/stdc++.h>

using namespace std;
int t,n,m;
long long niza[75010],nizb[75010];
long long miin=99999999999999999;
bool gotovo=false;
int main (){
    scanf("%d",&t);
    while(t--){
        scanf("%d %d",&n,&m);
        for(int i = 1; i <= n; i++){
            scanf("%lld",&niza[i]);
        }
        for(int i = 1; i <= m; i++){
            scanf("%lld",&nizb[i]);
        }
        sort(niza+1,niza+n+1);
        gotovo=false;
        miin=99999999999999999;
        for(int i = 1; i <= n-1; i++){
            if(niza[i+1]-niza[i]<miin){
                miin=niza[i+1]-niza[i];
                if(miin==1){
                    gotovo=true;
                }
            }
        }
        if(gotovo){
            printf("%d\n",0);
            continue;
        }
        long long ost=niza[1]%miin;
        for(int i = 1; i <= m; i++){
            if(nizb[i]%miin==ost){
                gotovo=true;
                break;
            }
        }
        if(gotovo){
            printf("%d\n",0);
            continue;
        }
        for(int i = 1; i <= n; i++){
            if(niza[i]%miin!=ost){
                gotovo=true;
                break;
            }
        }
        if(gotovo){
            printf("%d\n",0);
        }else{
            printf("%d\n",1);
        }
    }
return 0;
}