#include <bits/stdc++.h>
using namespace std;
long long max(long long x, long long y){
    if(x>=y)
        return x;
    return y;
}
long long min(long long x, long long y){
    if(x<=y)
        return x;
    return y;
}
long long NZD(long long s, long long p){
    long long q, r;
    q=s/p;
    r=s-p*q;
    if(r==0)
        return s/q;
    NZD(p, r);
}
int main(){
    ios_base::sync_with_stdio(false);
    short t;
    int m[6][3]={1};
    long long a[6][10010], b[6][10010];
    cin>>t;
    for(short k=1; k<=t; k++){
        cin>>m[k][0]>>m[k][1];
        for(int i=0; i<m[k][0]; i++){
            cin>>a[k][i];
        }
        for(int i=0; i<m[k][1]; i++){
            cin>>b[k][i];
        }
        a[k][m[k][0]]=abs(a[k][1]-a[k][0]);
        for(int i=2; i<m[k][0]; i++){
            a[k][m[k][0]]=NZD(max(a[k][m[k][0]], abs(a[k][i]-a[k][i-1])), min(a[k][m[k][0]], abs(a[k][i]-a[k][i-1])));
        }
        for(int i=0; i<m[k][1]; i++){
            if(abs(b[k][i]-a[k][0])%a[k][m[k][0]]==0){
                m[k][2]=0;
            }
        }
    }
    for(int k=1; k<=t; k++)
        cout<<m[k][2]<<endl;
    return 0;
}