#include<bits/stdc++.h>
using namespace std;
bool sol;
int N,M,T;
long long A[75009],B[75009],pok,X;
void input(){
   cin>>N;
   cin>>M;
   for(int i=1; i<=N; i++)cin>>A[i];
   for(int i=1; i<=M; i++)cin>>B[i];
}
long long nzd(long long a,long long b){
   a=abs(a);
   b=abs(b);
   while(a%b>0){
      a%=b;
      swap(a,b);
   }
   return b;
}
long long find_X(){
   long long X=nzd(A[1]-pok,A[2]-pok);
   if(N>2){
      for(int i=2; i<N; i++){
         long long a=nzd(A[i]-pok,A[i+1]-pok);
         X=nzd(X,a);
      }
   }
   return X;
}
bool find_sol(){
   for(int i=1; i<=M; i++)
      if(abs(B[i]-pok)%X==0)return false;
   return true;
}
int main(){

   cin>>T;
   while(T--){
      input();
      sort(A+1,A+1+N);
      pok=A[1];
      X=find_X();
      sol=find_sol();
      cout<<sol<<endl;
   }
   return 0;
}