using System;

namespace zalbe
{
    class Program
    {
        static ulong abs(ulong np, ulong nd) {
            if (np < nd) {
                ulong t = np;
                np = nd;
                nd = t;
            }
            return np - nd;
        }
        static ulong[] funkcija(ulong broj)
        {
            ulong index = 0;
            ulong count = 0;
            ulong n = broj;
            for (ulong i = 2; i < n; i++)
                if (broj % i == 0)
                {
                    count++;
                    while (broj % i == 0) broj /= i;
                }
            ulong[] prosti = new ulong[count];

            broj = n;
            for (ulong i = 2; i < n; i++)
            {
                if (broj % i == 0)
                {
                    prosti[index++] = i;
                    while (broj % i == 0) broj /= i;
                }
            }
            return prosti;
        }

        static void Main(string[] args)
        {
            int t = int.Parse(Console.ReadLine());
            int[] rez = new int[t];
            string[] takmicari = new string[t];

            for (int i = 0; i < t; i++)
            {
                bool stanje = true;

                string[] unos = Console.ReadLine().Split();
                ulong n = ulong.Parse(unos[0]);
                ulong m = ulong.Parse(unos[1]);

                unos = Console.ReadLine().Split();
                ulong[] p = new ulong[n];
                for (ulong j = 0; j < n; j++)
                    p[j] = ulong.Parse(unos[j]);

                unos = Console.ReadLine().Split();
                ulong[] np = new ulong[m];
                for (ulong j = 0; j < m; j++)
                    np[j] = ulong.Parse(unos[j]);

                ulong maksP = 0, maksD = 0, pozP = 0;

                for (ulong j = 0; j < n; j++)
                    if (p[j] > maksP) { maksP = p[j]; pozP = j; }
                p[pozP] = 0;
                for (ulong j = 0; j < n; j++)
                    if (p[j] > maksD) maksD = p[j];
                p[pozP] = maksP;

                ulong r = maksP - maksD;

                if (n == 2) {
                    for (ulong j = 0; j < m - 1; j++)
                        if ((np[j] - np[j + 1]) % r == 0) { stanje = false; break; }
                    if (stanje) { rez[i] = 1; }
                }
                else
                {
                    ulong[] pr = funkcija(r);
                    ulong q = 0;

                    for (ulong j = 0; j < Convert.ToUInt64(pr.Length); j++) {
                        for (ulong k = 0; k < n - 1; k++) {
                            if (abs(p[k], p[k + 1]) % pr[j] != 0) {
                                stanje = false;
                                break;
                            }
                            else { stanje = true; q = pr[j]; }
                        }
                        if (stanje) break;
                    }
                    if (stanje) {
                        for (ulong j = 0; j < m - 1; j++)
                            if ((np[j] - np[j + 1]) % q == 0) { stanje = false; break; }
                    }
                }
                if (stanje) rez[i] = 1;
            }
            foreach (var s in rez)
                Console.WriteLine(s);
        }
    }
}