using System;

namespace ConsoleApp23
{
    class Program
    {
        static long AAA(long x, long y)
        {
            if (x == 0)
                return y;
            return AAA(y % x, x);
        }
        static long NZD(long[] a, int n)
        {
            long x = a[0];
            for (int i = 1; i < n; i++)
            {
                x = AAA(a[i], x);
                if (x == 1)
                {
                    return 1;
                }
            }
            return x;

        }
        static void Main(string[] args)
        {
            int t = int.Parse(Console.ReadLine());
            string s; int n = 0, m = 0;
            long[] tacne;
            long[] netacne;
            long[] tacne1;
            long[] netacne1;
            long nzd1; long nzd2;
            long[] moze = new long[t];
            long min1 = long.MaxValue; long min2 = long.MaxValue;
            long br = 0;

            for (int i = 0; i < t; i++)
            {
                s = Console.ReadLine();
                n = int.Parse(s.Substring(0, s.IndexOf(" ")));
                m = int.Parse(s.Substring(s.IndexOf(" ")));
                tacne = new long[n];
                netacne = new long[m];
                tacne1 = new long[n - 1];
                netacne1 = new long[m - 1];
                min1 = 0; min2 = 0;


                s = Console.ReadLine();
                for (int j = 0; j < n - 1; j++)
                {
                    tacne[j] = long.Parse(s.Substring(0, s.IndexOf(" ")));
                    s = s.Substring(s.IndexOf(" ") + 1);
                    if (j == 0)
                    {
                        min1 = tacne[j];
                    }
                    min1 = Math.Min(tacne[j], min1);
                }
                tacne[n - 1] = long.Parse(s);
                min1 = Math.Min(tacne[n-1], min1);
                s = Console.ReadLine();
                for (int j = 0; j < m - 1; j++)
                {
                    netacne[j] = long.Parse(s.Substring(0, s.IndexOf(" ")));
                    s = s.Substring(s.IndexOf(" ") + 1);
                    if (j == 0)
                    {
                        min2 = netacne[j];
                    }
                    min2 = Math.Min(netacne[j], min2);
                }
                netacne[m - 1] = long.Parse(s);
                min2 = Math.Min(netacne[m-1], min2);
                long d = tacne[0];
                long d1 = netacne[0];

                for (int j = 0; j < n; j++)
                {
                    if (tacne[j] != min1)
                    {
                        tacne1[br] = tacne[j]-min1;
                        br++;
                    }
                }
                br = 0;
                for (int j = 0; j < m; j++)
                {
                    if (netacne[j] != min2)
                    {
                        netacne1[br] = netacne[j]-min2;
                        br++;
                    }
                }
                br = 0;
                nzd1 = NZD(tacne1, n - 1);
                nzd2 = NZD(netacne1, m - 1);
                if (AAA(nzd1, nzd2) == 1 && nzd1 != 1)
                {
                    moze[i] = 1;
                }

            }
            for (int i = 0; i < t; i++)
            {
                Console.WriteLine(moze[i]);
            }
        }
    }
}