#include <iostream>
using namespace std;
int d[10000001]={1,1,0},e[10000000];
int main(int argc, char *argv[])
{
int a,c,b,s,m=0,n,i,j,t;
/*for(i=2;i<10000001;i++)
for(j=2;j*i<=10000000;j++)
d[j*i]=1;
for(i=0;i<=10000000;i++)
if(!d[i]) e[m++]=i;
cout<<m<<endl;*/
cin>>t;
while(t--)
{
cin>>a>>c;n=c;j=a;
if(c%a) cout<<"NO SOLUTION"<<endl;
else
{
if(c/a==1) b=1;
else
{
m=1;
for(i=2;i<=a;i++)
{
if(c/a==1) break;
s=1;
while(!(a%i))
{
a/=i;c/=i;
s*=i;
}
if(s!=1&&(!(c%i))) m*=s;
while(!(c%i)) c/=i;
}
b=n/j*m;//m为最大公约数;
}
cout<<b<<endl;
}
}
return 0;
}
using namespace std;
int d[10000001]={1,1,0},e[10000000];
int main(int argc, char *argv[])
{
int a,c,b,s,m=0,n,i,j,t;
/*for(i=2;i<10000001;i++)
for(j=2;j*i<=10000000;j++)
d[j*i]=1;
for(i=0;i<=10000000;i++)
if(!d[i]) e[m++]=i;
cout<<m<<endl;*/
cin>>t;
while(t--)
{
cin>>a>>c;n=c;j=a;
if(c%a) cout<<"NO SOLUTION"<<endl;
else
{
if(c/a==1) b=1;
else
{
m=1;
for(i=2;i<=a;i++)
{
if(c/a==1) break;
s=1;
while(!(a%i))
{
a/=i;c/=i;
s*=i;
}
if(s!=1&&(!(c%i))) m*=s;
while(!(c%i)) c/=i;
}
b=n/j*m;//m为最大公约数;
}
cout<<b<<endl;
}
}
return 0;
}