package zalbe;

import java.util.Arrays;
import java.util.Scanner;

public class Zalbe {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int brojTakmicara = sc.nextInt();
        
        for (int i = 0; i < brojTakmicara; i++) {
            int brojTacnih = sc.nextInt();
            int brojNetacnih = sc.nextInt();
            
            boolean tacno = true;
            long[] tacni = new long[brojTacnih];
            long[] neTacni = new long[brojNetacnih];

            for (int j = 0; j < tacni.length; j++) {
                tacni[j] = sc.nextLong();
            }

            for (int j = 0; j < neTacni.length; j++) {
                neTacni[j] = sc.nextLong();
            }
            
            long x = Long.MAX_VALUE;
            
            for (int j = 0; j < tacni.length-1; j++) {
                if (tacni[j] - tacni[j+1] < x) {
                    x = tacni[j] - tacni[j+1];
                }
            }

            for (int j = 0; j < tacni.length-1; j++) {
                if ((tacni[j] - tacni[j+1]) % x == 0) {
                    continue;
                }
                tacno = true;
                break;
            }

            for (int j = 0; j < neTacni.length; j++) {
                if (Math.abs(tacni[0] - neTacni[j]) % x == 0) {
                    tacno = false;
                    break;
                }
            }
        
        System.out.println((tacno)? 1:0);
            
        }
        
//        boolean tacno = true;
//        long[] tacni = new long[brojTacnih];
//        long[] neTacni = new long[brojNetacnih];
//        
//        for (int i = 0; i < tacni.length; i++) {
//            tacni[i] = sc.nextLong();
//        }
//        
//        for (int i = 0; i < neTacni.length; i++) {
//            neTacni[i] = sc.nextLong();
//        }
//        
//        
//        
//        long x = Long.MAX_VALUE;
//        for (int i = 0; i < tacni.length-1; i++) {
//            if (tacni[i] - tacni[i+1] < x) {
//                x = tacni[i] - tacni[i+1];
//            }
//        }
//        
//        for (int i = 0; i < tacni.length-1; i++) {
//            if ((tacni[i] - tacni[i+1]) % x == 0) {
//                continue;
//            }
//            tacno = true;
//            break;
//        }
//        
//        for (int i = 0; i < neTacni.length; i++) {
//            if (Math.abs(tacni[0] - neTacni[i]) % x == 0) {
//                tacno = false;
//                break;
//            }
//        }
//        
//        System.out.println((tacno)? 1:0);
        
    }
    
}