using System;

namespace kv1_z3
{
    class Program
    {
        struct godine 
        {
            public long[] prihvacene;
            public long[] neprihvacene;
            public int p;
            public int n;
        }
        static void Main(string[] args)
        {
            int t = int.Parse(Console.ReadLine());
            string[] s;
            godine[] a = new godine[t];
            for(int i = 0; i < t; i++)
            {
                s = Console.ReadLine().Split();
                a[i].p = int.Parse(s[0]);
                a[i].n = int.Parse(s[1]);
                s = Console.ReadLine().Split();
                a[i].prihvacene = new long[a[i].p];
                for (int j = 0; j < a[i].p; j++) a[i].prihvacene[j] = long.Parse(s[j]); 
                s = Console.ReadLine().Split();
                a[i].neprihvacene = new long[a[i].n];
                for (int r = 0; r < a[i].n; r++) a[i].neprihvacene[r] = long.Parse(s[r]);
            }
            for (int i = 0; i < t; i++)
            {
                bool x = true;
                long minrazlika = Math.Abs(a[i].prihvacene[0] - a[i].prihvacene[1]);
                for (int j = 2; j < a[i].p; j++) if (Math.Abs(a[i].prihvacene[j - 1] - a[i].prihvacene[j]) < minrazlika) minrazlika = Math.Abs(a[i].prihvacene[j - 1] - a[i].prihvacene[j]);
                for (int j = 1; j < a[i].p; j++) if (Math.Abs(a[i].prihvacene[j - 1] - a[i].prihvacene[j]) % minrazlika != 0) x = false;


                for (int j = 0; j < a[i].n; j++)
                {
                    long n = a[i].neprihvacene[j];
                    long k = a[i].prihvacene[0];
                    while (n > minrazlika) n -= minrazlika;
                    while (k > minrazlika) k -= minrazlika;
                    if (n == k) x = false;
                }
                if (x) Console.WriteLine("1");
                else Console.WriteLine("0");
            }

        }
    }
}