#include #include #include #include #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) #define all(x) begin(x),end(x) #define sz(x) (int)(x).size() using namespace std; using namespace atcoder; using ll=long long; using ld=long double; using vll=vector; using vvll=vector; using vi=vector; using vvi=vector; using pll=pair; using pi=pair; // using mint=modint998244353; using mint=modint1000000007; // using mint2=static_modint<2>; // using BoostPoint=boost::polygon::point_data; // using Voronoi=boost::polygon::voronoi_diagram; // using mint=LazyMontgomeryModInt<998244353>; using vm=vector; // using vvm=vector; #line 2 "prime/prime-sieve.hpp" // Prime -> {0, 0, 1, 1, 0, 1, 0, 1, ...} vector prime_sieve(int N) { vector sieve(max(1, N) + 1, 1); sieve[0] = sieve[1] = false; for (int i = 2; i * i <= N; i++) if (sieve[i] == true) for (int j = i * i; j <= N; j += i) sieve[j] = false; return sieve; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); auto is_prime=prime_sieve(5'000'000); int T; cin>>T; while(T--){ ll A,P; cin>>A>>P; if(is_prime[P]){ if(A%P==0)cout<<0<<'\n'; else cout<<1<<'\n'; }else{ cout<<-1<<'\n'; } } }