using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
      static long nzdval(long x, long y)
        {
            long nzd = 1;
            bool kraj = true;
            if (x <= y)
            {
                for (long i = x; i >= 1 && kraj; i--)
                    if (x % i == 0 && y % i == 0)
                    {
                        nzd = i;
                        kraj = false;
                    }
            }
            else
                for (long j = y; j >= 1 && kraj; j--)
                    if (x % j == 0 && y % j == 0)
                    {
                        nzd = j;
                        kraj = false;
                    }
            return nzd;
        }
   
        struct podaci
        {
            public int poz;
            public int neg;
            public string pozitivni;
            public string negativni;
        }
        static void Main(string[] args)
        {
            bool postoji=true;
            long odst=0, odst1=0,nzd=0;
            int t = int.Parse(Console.ReadLine());
            podaci[] ucesnik = new podaci[t];
            string[] s,k,p;
            for (int i = 0; i < t; i++)
              {
                s = Console.ReadLine().Split();
                ucesnik[i].poz = int.Parse(s[0]);
                ucesnik[i].neg = int.Parse(s[1]);
                ucesnik[i].pozitivni = Console.ReadLine();
                ucesnik[i].negativni = Console.ReadLine();          
              }
             
             for (int uc = 0; uc < t; uc++) 
             {
                 postoji = true;
                 nzd = 0;
                 odst = 0;
                 odst1 = 0;
                 k = ucesnik[uc].pozitivni.Split();
                 for (int j = 1; j < ucesnik[uc].poz; j++)
                 {
                   if (j == 1) 
                       odst = Math.Abs(Int64.Parse(k[1]) - Int64.Parse(k[0]));
                   else
                       odst1 = Math.Abs(Int64.Parse(k[j]) - Int64.Parse(k[j-1]));

                     if (j == 1) 
                       nzd = odst;
                   else if (j == 2)
                       nzd = nzdval(odst, odst1);
                   else 
                       nzd = nzdval(nzd, odst1);
                 }
                 for (int j = 0; j < ucesnik[uc].neg && postoji; j++)
                  {
                    p = ucesnik[uc].negativni.Split();
                    if (Math.Abs(Int64.Parse(p[j]) - Int64.Parse(k[0])) % nzd == 0) postoji = false;
                  }
                 if (postoji) Console.WriteLine(1);
                 else Console.WriteLine(0);
              }
        }
    }
}