#include<bits/stdc++.h>
using namespace std;
#define int long long
int rd(){int Q;scanf("%lld",&Q);return Q;}
int t=rd(),gy;
int gcd(int x,int y){
return y?gcd(y,x%y):x;
}
priority_queue<int,vector<int>,greater<int> >q;
main(){
freopen("math.in","r",stdin);
freopen("math.out","w",stdout);
while(t--){
int x=rd(),y,z=rd(),flag=0;
if(z%x==0)gy=z/x;
else {cout<<-1<<endl;continue;}
for(int i=1;i*i<=gy;i++){
if(gy%i==0)q.push(i);
if(i*i!=gy)q.push(gy/i);
}
while(!q.empty()){
y=q.top();q.pop();
if(z==x*y*gcd(x,y)){
cout<<y<<endl;
flag=1;
break;
}
}if(flag==0)cout<<-1<<endl;
while(!q.empty())q.pop();
}
return 0;
}