using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Zadatak3
{
    class Program
    {
        static List<long> Zajednicki(List<long> listaDelilaca, List<long> listaTrenutnihDelilaca)
        {
            var ListaA = listaDelilaca;
            var ListaB = listaTrenutnihDelilaca;
            var presek = ListaA.Intersect(ListaB);
            listaDelilaca = presek.ToList();
            return listaDelilaca;
        }
        static List<long> Deljenici(long broj)
        {
            List<long> listaDelilaca = new List<long>();
            for (long i = 1; i < broj; i++)
                if (broj % i == 0)
                    listaDelilaca.Add(i);
            return listaDelilaca;
        }
        static List<long> nizDeljenika(long[] niz)
        {
            List<long> listaDelilaca = new List<long>();
            List<long> listaTrenutnihDelilaca = new List<long>();
            listaDelilaca = Deljenici(niz[niz.Length - 1] - niz[0]);
            for (long i = 1; i < niz.Length - 1; i++)
            {
                listaTrenutnihDelilaca = Deljenici(niz[niz.Length - 1] - niz[i]);
                listaDelilaca = Zajednicki(listaDelilaca, listaTrenutnihDelilaca);
            }
            return listaDelilaca;
        }
        static void Main(string[] args)
        {
            long brTakm = long.Parse(Console.ReadLine());
            string[] ulaz;
            long brProslih = 0, brOdbijenih = 0;
            long[] nizProslih, nizOdbijenih;
            long[] nizIzlaz = new long[brTakm];
            for (int i = 0; i < brTakm; i++)
            {
                ulaz = Console.ReadLine().Split();
                brProslih = long.Parse(ulaz[0]);
                brOdbijenih = long.Parse(ulaz[1]);
                nizProslih = new long[brProslih];
                nizOdbijenih = new long[brOdbijenih];
                ulaz = Console.ReadLine().Split();
                for (long j = 0; j < brProslih; j++)
                {
                    nizProslih[j] = long.Parse(ulaz[j]);
                }
                Array.Sort(nizProslih);
                ulaz = Console.ReadLine().Split();
                for (long j = 0; j < brOdbijenih; j++)
                {
                    nizOdbijenih[j] = long.Parse(ulaz[j]);
                }
                Array.Sort(nizOdbijenih);
                if (brProslih != 2)
                {
                    List<long> listaDeljenika = nizDeljenika(nizProslih);
                    List<long> listaPoklapanja = new List<long>();
                    long prviBroj = nizProslih[0];
                    foreach (int broj in listaDeljenika)
                    {
                        for (int br = 0; br < (nizProslih[brProslih - 1] - nizProslih[0]) / broj; br++)
                        {
                            prviBroj += broj;
                            if (nizOdbijenih.Contains(prviBroj) && !listaPoklapanja.Contains(broj))
                                listaPoklapanja.Add(broj);
                        }
                        prviBroj = nizProslih[0];
                    }
                    foreach (long broj in listaPoklapanja)
                        listaDeljenika.Remove(broj);
                    if (listaDeljenika.Count != 0)
                        nizIzlaz[i] = 1;
                    else nizIzlaz[i] = 0;
                }
                else nizIzlaz[i] = 1;
            }
            for (int i = 0; i < brTakm; i++)
            {
                Console.WriteLine(nizIzlaz[i]);
            }
        }
    }
}