#include <bits/stdc++.h>
#include <algorithm>
#include <vector>
using namespace std;
int gcd(int n1,int n2){
    int hcf=0;
    if ( n2 > n1) {
        int temp = n2;
        n2 = n1;
        n1 = temp;
    }

    for (int i = 1; i <=  n2; ++i) {
        if (n1 % i == 0 && n2 % i ==0) {
             hcf = i;
        }
    }
    return hcf;
}
int main()
{
    int t,n,m,temp,temp1,temp2;
    vector<int> a;
    vector<int> b;
    vector<int> razlika1;
    vector<int> razlika2;
    int nzd1,nzd2,rezultat1,rezultat2,maxtemp,mintemp;
    cin>>t;
    for(int f=0; f<t; f++){
        cin>>n>>m;
        for(int i=0; i<n; i++){
            cin>>temp;
            a.push_back(temp);
        }
        for(int i=0; i<m; i++){
            cin>>temp;
            b.push_back(temp);
        }
        sort(a.begin(),a.end());
        sort(b.begin(),b.end());
        for(int i=0; i<n-1; i++){
            temp1=a[i+1];
            temp2=a[i];
            temp1=temp1-temp2;
            razlika1.push_back(temp1);
        }
        for(int i=0; i<m-1; i++){
            temp1=b[i+1];
            temp2=b[i];
            temp1=temp1-temp2;
            razlika2.push_back(temp1);
        }
        sort(razlika2.begin(),razlika2.end());
        sort(razlika1.begin(),razlika1.end());
        temp1=razlika1[1];
        temp2=razlika1[0];
        nzd1=gcd(temp1,temp2);
        temp=nzd1;
        for(int i=0; i<n-1; i++){
            temp1=razlika1[i+1];
            temp2=razlika2[i];
            temp=gcd(temp1,temp2);
            if(nzd1==temp){
                rezultat1=1;
            }
            else{
                maxtemp=max(nzd1,temp);
                mintemp=min(nzd1,temp);
                if(maxtemp%mintemp==0){
                    nzd1=mintemp;
                }
                else{
                    rezultat1=0;
                    break;                }
            }
        }
        temp1=razlika2[1];
        temp2=razlika2[0];
        nzd2=gcd(temp1,temp2);
        temp=nzd2;
        for(int i=0; i<n-1; i++){
            temp=gcd(temp1,temp2);
            if(nzd2==temp){
                rezultat2=1;
            }
            else{
                maxtemp=max(nzd2,temp);
                mintemp=min(nzd2,temp);
                if(maxtemp%mintemp==0){
                    nzd2=mintemp;
                }
                else{
                    rezultat2=0;
                    break;
                }
            }
        }
        if(rezultat1==0||rezultat2==0){
            cout<<"0"<<endl;
        }
        else{
            maxtemp=max(nzd1,nzd2);
            mintemp=min(nzd1,nzd2);
            if(maxtemp%mintemp==0){
                cout<<"0"<<endl;
            }
            else{
                cout<<"0"<<endl;
            }

        }




    }
}