#include <bits/stdc++.h>
using namespace std;

int nadjiT( long long int A[], int N, long long int B[], int M ){

    int i, j;
    long long int raz = abs( A[ 1 ] - A[ 0 ] );
    vector<long long int> faktori;
    i = 2;
    while( i * i <= raz ){
        if( raz % i == 0 ){
            faktori.push_back( i );
        }
        i++;
    }

    int pom = faktori.size();
    for( i = pom - 1; i >= 0; i-- )
        if( faktori[ i ] * faktori[ i ] != raz )
        faktori.push_back( raz / faktori[ i ] );
    faktori.push_back( raz );


    bool r;
    for( i = 0; i < faktori.size(); i++ ){

        r = true;
        for( j = 0; j < N - 1; j++ ){
            if( abs( A[ j ] - A[ j + 1 ] ) % faktori[ i ] )
                    r = false;
        }

        if( r ){
            for( j = 0; j < M; j++ ){
                if( abs( A[ 0 ] - B[ j ] ) % faktori[ i ] == 0 ){
                    r = false;
                    break;
                }
            }
        }

        if( r )
            return 1;
    }
    return 0;
}

int main(){
    int i, j, T, N, M;
    long long int pom;
    scanf( "%d", &T );
    int rez[ T ];
    for( i = 0; i < T; i++ ){
        scanf( "%d %d", &N, &M );
        long long int A[ N ];
        long long int B[ M ];
        for( j = 0; j < N; j++ )
            scanf( "%lld", &A[ j ] );
        for( j = 0; j < M; j++ )
            scanf( "%lld", &B[ j ] );
        rez[ i ] = nadjiT( A, N, B, M );
    }

    for( i = 0; i < T; i++ )
        printf( "%d\n", rez[ i ] );
}