#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

int nzd(int a, int b){
	if(a%b==0)
		return b;
	else
		return nzd(b, a%b);	
}

int provera(vector<int> a, vector<int> b){
	//cout << "proveravam..." << endl;
	vector<int> r;
	int check = a[0];
	for(int i=0; i<a.size()-1; i++){
		int raz = abs(check-a[i+1]);
		r.push_back(raz);
	}
	int nzdd = r[0];
	for(int i=0; i<r.size(); i++){
		nzdd = nzd(nzdd, r[i]);	
	}
	//cout << "nzd=" << nzdd << endl;
	if(nzdd==1)
		return 0;
	for(int i=0; i<r.size(); i++){
		if(r[i]%nzdd!=0){
			//cout << "a skup ne valja" << endl;
			return 0;
		}
	}
	
	r.clear();
	
	for(int i=0; i<b.size()-1; i++){
		int raz = abs(check-b[i+1]);
		r.push_back(raz);
	}

	for(int i=0; i<r.size(); i++){
		if(r[i]%nzdd==0){
			//cout << "b skup ne valja" << endl;
			return 0;
		}
	}
	return 1;
}

int main(){
	int t;
	cin >> t;
	vector<int> a;
	vector<int> b;
	vector<int> r;
	for(int i=0; i<t; i++){
		//cout << "usao u petlju, i=" << i << endl;
		int n, m;
		cin >> n >> m;
		for(int i=0; i<n; i++){
			int x;
			cin >> x;
			a.push_back(x);	
		}
		for(int i=0; i<m; i++){
			int x;
			cin >> x;
			b.push_back(x);	
		}
		sort(a.begin(), a.end());
		sort(b.begin(), b.end());
		r.push_back(provera(a, b));
	}
	for(int i=0; i<r.size(); i++){
		cout << r[i] << endl;
	}
}