#include <iostream>
#include <bits/stdc++.h>

using namespace std;

bool resi()
{
    unsigned int tacni ; unsigned int netacni ; cin >> tacni ; cin >> netacni;
    unsigned long long int tacni_niz[tacni]; unsigned long long int netacni_niz[netacni];
    unsigned long long int najmanji = 0; ; unsigned long long int najveci = 0 ;
    
    for ( unsigned int i = 0 ; i < tacni ; i++ ) 
    { 
        cin >> tacni_niz[i];
        if ( tacni_niz[i] > najveci ) { najveci = tacni_niz[i]; }
        else { if ( tacni_niz[i] < najmanji ) { najmanji = tacni_niz[i]; } }
    }
    
    for ( unsigned int i = 0 ; i < netacni ; i++ ) 
    {
        cin >> netacni_niz[i];
        if ( netacni_niz[i] > najveci ) { najveci = netacni_niz[i]; }
        else { if ( netacni_niz[i] < najmanji ) { najmanji = netacni_niz[i]; } }
    }
    
    int velicina_tacnih = sizeof(tacni_niz) / sizeof(tacni_niz[0]);
    sort(tacni_niz, tacni_niz + velicina_tacnih);
    
    unsigned long long int najmanji_razmak = 999999999999999999 ;
    for ( unsigned int i = 1 ; i < tacni ; i++ ) { if ( tacni_niz[i] - tacni_niz[i-1] < najmanji_razmak ) { najmanji_razmak = tacni_niz[i] - tacni_niz[i-1] ;} }
    
    for ( unsigned int i = 0 ; i < netacni ; i++ )
    {
        if ( (netacni_niz[i]-tacni_niz[0])%najmanji_razmak == 0 ) { return 0; }
    }
    
    int velicina_netacnih = sizeof(netacni_niz) / sizeof(netacni_niz[0]);
    sort(netacni_niz, netacni_niz + velicina_netacnih);
    
    
    return 1 ;
}

int main()
{
    int broj_takmicara;
    cin >> broj_takmicara;
    
    for ( int i = 0 ; i < broj_takmicara ; i++) cout << resi() << "\n";
    
    return 0;
}