#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <utility>
#include <tuple>
#include <cstdint>
#include <cstdio>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <deque>
#include <unordered_map>
#include <unordered_set>
#include <bitset>
#include <cctype>
#include <numeric>
#define ll long long int
#define pb push_back
#define rep(i,n) for(int i=0;i<(n);i++)
#define REP(i,n) for(int i=1;i<=(n);i++)
using namespace std;

int mx8[] = {0,0,1,-1,-1,1,-1,1};
int my8[] = {-1,1,0,0,-1,-1,1,1};
int mx4[] = {1,-1,0,0};
int my4[] = {0,0,-1,1};
const int MOD = 1000000007;

int y[5000003];


int main() {

    for(int i = 2; i <= 5000002; i++){
        for(int j = 1; j <= 5000002/i; j++){
            y[i*j]++;
        }
    }

    int t; cin >> t;
    rep(test,t){
        ll a,p;
        cin >> a >> p;
        if(y[p] == 1){
            if(a % p == 0) cout << 0 << endl;
            else cout << 1 << endl;
        }else{
            cout << -1 << endl;
        }
    }


}