using System;
using System.Linq;
using System.Security.Cryptography;
using System.Collections.Generic;

namespace C
{
    class Program
    {
        static int deljivostnizab(UInt64[] x, UInt64 j, UInt64 h)//da li neki element niza x daje ostatak h pri deljenju sa j, 1 - da, 0 - ne
        {
            int c = 0;
            for (int i = 0; i < x.Length && c==0; i++)
            {
                if (x[i] % j == h)
                {
                    c = 1;
                }
            }
            return c;
        }
        static int deljivostniza(UInt64[] x, UInt64 j, UInt64 h)//da li svaki element niza x daje ostatak h pri deljenju sa j, 1 - da, 0 - ne
        {
            int c = 1;
            for (int i = 0; i < x.Length && c==1; i++)
            {
                if (x[i] % j != h)
                {
                    c = 0;
                }
            }
            return c;
        }
        static void Main(string[] args)
        {
            int t = int.Parse(Console.ReadLine());//broj takmicara
            List<int> t01 = new List<int>();
            for (int i = 0; i < t; i++)
            {
                string[] s = Console.ReadLine().Split();
                int n = int.Parse(s[0]);
                int m = int.Parse(s[1]);
                int c = 0;
                UInt64[] a = new UInt64[n];
                UInt64[] b = new UInt64[m];
                UInt64[] a2 = new UInt64[n - 1];//razlike izmedju brojeva u a[]
                UInt64[] b2 = new UInt64[m - 1];//razlike izmedju brojeva u b[]
                string[] a1 = Console.ReadLine().Split();
                string[] b1 = Console.ReadLine().Split();
                a[0] = UInt64.Parse(a1[0]);
                for (int j = 1; j < n; j++)
                {
                    a[j] = UInt64.Parse(a1[j]);
                    if (a[j] > a[j - 1])
                    {
                        a2[j - 1] = a[j] - a[j - 1];
                    }
                    else
                    {
                        a2[j - 1] = a[j - 1] - a[j];
                    }
                }
                b[0] = UInt64.Parse(b1[0]);
                for (int j = 1; j < m; j++)
                {
                    b[j] = UInt64.Parse(b1[j]);
                    if (b[j] > b[j - 1])
                    {
                        b2[j - 1] = b[j] - b[j - 1];
                    }
                    else
                    {
                        b2[j - 1] = b[j - 1] - b[j];
                    }
                }
                UInt64 x = a2.Min();
                for (UInt64 j = 2; j <= x; j++)
                {
                    UInt64 h = a[a.Length - 1] % j;
                    if (deljivostniza(a, j, h) == 1 && deljivostnizab(b, j, h) == 0)
                    {
                        c = 1;
                        x = 1;
                    }
                }
                t01.Add(c);
            }
            for (int i = 0; i < t01.Count; i++)
            {
                Console.WriteLine(t01[i]);
            }
        }
    }
}