#include #define _overload3(_1, _2, _3, name, ...) name #define _rep(i, n) repi(i, 0, n) #define repi(i, a, b) for (int i = (a); i < (b); ++i) #define rep(...) _overload3(__VA_ARGS__, repi, _rep, )(__VA_ARGS__) #define ALL(x) x.begin(), x.end() #define chmax(x, y) x = max(x, y) #define chmin(x, y) x = min(x, y) using namespace std; random_device rnd; mt19937 mt(rnd()); using ll = long long; using lld = long double; using VI = vector; using VVI = vector; using VL = vector; using VVL = vector; using PII = pair; const int IINF = 1 << 30; const ll INF = 1ll << 60; ll frac(int n, int m) { if (n == 0) return 1; return (frac(n - 1, m) * n) % m; ; } vector make_prime() { vector isPrime(5 * 1010101, true); isPrime[0] = false; isPrime[1] = false; rep(i, 2, 5 * 1010101) { if (isPrime[i] == false) { continue; } for (int j = i + i; j < 5 * 1010101; j += i) { isPrime[j] = false; } } return isPrime; } ll mpow(ll base, ll num, ll mod) { if (num == 0) return 1; ll prev = mpow(base, num / 2, mod); if (num % 2 == 0) { return (prev * prev) % mod; } else { return (((prev * prev) % mod) * base) % mod; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); auto isPrime = make_prime(); int t; cin >> t; rep(i, t) { ll a, p; cin >> a >> p; if (isPrime[p]) { if (a % p == 0) { cout << 0 << "\n"; } else { cout << 1 << "\n"; } } else { cout << -1 << "\n"; } } return 0; }