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

int main(){
	int T,i,M,N,j,k,indA,indB,p,pom,ind;
	long long int X;
	while(1){
		cin >> T;
		if(T<1 || T>5){
			cout << "Moze imati od 1 do 5 takmicara!\nPonovo unesite broj takmicara...\n" << endl;
		}
		else{
			break;
		}
	}
	int rezultati[T],r=0;
	for(i=0; i<T; i++){
		while(1){
			cin >> N >> M;
			if((N<2 || N>75000) || (M<2 || M>75000)){
				cout << "Broj N i M moraju biti veci od 2 i manji od 75000!\n Unesite ponovo vrednosti za N i M\n" << endl;
			}
			else{
				break;
			}
		}
		long long int A[N],B[M];
		while(1){
			for(j=0; j<N; j++){
				cin >> A[j];
			}
			indA=1;
			for(j=0; j<N-1; j++){
				for(k=j+1; k<N; k++){
					if(A[j] == A[k]){
						indA=0;
						break;
					}
				}
				if(!indA){
					break;
				}
			}
			if(indA){
				break;
			}
			else{
				cout << "Postoji 2 ili vise ista broja u nizu A!\n Unesite ponovo niz A...\n" << endl;
			}
		}
		while(1){
			for(j=0; j<M; j++){
				cin >> B[j];
			}
			indB=1;
			for(j=0; j<M-1; j++){
				for(k=j+1; k<M; k++){
					if(B[j] == B[k]){
						indB=0;
						break;
					}
				}
				for(k=0; k<N; k++){
					if(B[j]==A[k]){
						indB=2;
						break;
					}
				}
				if(!indB){
					break;
				}
			}
			if(indB == 1){
				break;
			}
			else if(indB == 2){
				cout << "Postoji isti broj u nizu A i nizu B!\n Unesite ponovo niz B...\n" << endl;
			}
			else if(!indB){
				cout << "Postoji 2 ili vise ista broja u nizu B!\n Unesite ponovo niz B...\n" << endl;
			}
		}
		long long int razlike[N];
		p=0;
		X=abs(A[1]-A[0]);
		razlike[p++]=X;
		ind=1;
		for(j=1; j<N-1; j++){
			if(X > abs(A[j+1]-A[j])){
				X=abs(A[j+1]-A[j]);
			}
			razlike[p++]=abs(A[j+1]-A[j]);
		}
		for(j=0; j<p; j++){
			if(razlike[j]%X!=0){
				ind=0;
				break;
			}
		}
		if(ind){
			pom=1;
			for(j=0; j<M; j++){
				if(B[j]%X==A[0]%X){
					pom=0;
					break;
				}
			}
		}

		if(pom && ind){
			rezultati[r++]=1;
		}
		else{
			rezultati[r++]=0;
		}
	}
	for(i=0; i<r; i++){
		cout << rezultati[i] << " ";
	}
}