#include <iostream>
//#include <cstdint>
#include <bits/stdc++.h>


using namespace std;


int takmicari;
int numOfN;
int numOfM;

int64_t glasineN[75000];
int64_t glasineM[75000];

int main(int atgc, char* argv[])
{
	cin >> takmicari;


	for (int n=0; n<takmicari; n++)
	{
		cin >> numOfN >> numOfM;

		for (int i=0; i<numOfN; i++)
		{
			cin >> glasineN[i];
		}
		for (int i=0; i<numOfM; i++)
		{
			cin >> glasineM[i];
		}
//		cout << endl;

		int64_t difference_min = 0x7FFFFFFFFFFFFFFF;
		int64_t najmanja_godina = glasineN[0];

		for (int i=0; i<numOfN; i++)
		{
			if(glasineN[i]<najmanja_godina)
			{
				najmanja_godina = glasineN[i];
			}
		}


		for (int i=0; i<numOfN-1; i++)
		{
			for (int j=i+1; j<numOfN; j++)
			{
				if (abs(glasineN[i]-glasineN[j])<difference_min)
				{
					difference_min = abs(glasineN[i]-glasineN[j]);
				}
			}
		}
//		cout << endl << "difference_min: " << difference_min << endl;
//		cout << endl << "najmanji_broj: " << najmanja_godina << endl;

		// 1 7 4 13
		// 3 11 9
		int brojRazlika=1;
		bool glasineOK=true;
		for (int i=0; i<numOfM; i++)
		{
			if (glasineM[i] > najmanja_godina)
			{
				while((glasineOK==true) && ((najmanja_godina+difference_min*brojRazlika) <= glasineM[i]))
				{
					if ((najmanja_godina+difference_min*brojRazlika) == glasineM[i])
					{
						glasineOK=false;
						break;
					}
					brojRazlika++;
				}
			}
			else if (glasineM[i] < najmanja_godina)
			{
				while((glasineOK==true) && ((najmanja_godina-difference_min*brojRazlika) >= glasineM[i]))
				{
					if ((najmanja_godina-difference_min*brojRazlika) == glasineM[i])
					{
						glasineOK=false;
						break;
					}
					brojRazlika++;
				}
			}
			else
			{
				cout << "SHOULD NOT HAPPEN!!!" << endl;
			}
			if (!glasineOK)
			{
				break;
			}
		}
		cout << glasineOK << endl;


	}



	return 0;
}