#include <bits/stdc++.h>
#define ll long long int
#define pb push_back
#define mp make_pair
#define mod 1000000007
#define vl vector <ll>
#define all(c) (c).begin(),(c).end()
using namespace std;
long long readInt(long long l,long long r,char endd){
long long x=0;
int cnt=0;
int fi=-1;
bool is_neg=false;
while(true){
char g=getchar();
if(g=='-'){
assert(fi==-1);
is_neg=true;
continue;
}
if('0'<=g && g<='9'){
x*=10;
x+=g-'0';
if(cnt==0){
fi=g-'0';
}
cnt++;
assert(fi!=0 || cnt==1);
assert(fi!=0 || is_neg==false);
assert(!(cnt>19 || ( cnt==19 && fi>1) ));
} else if(g==endd){
if(is_neg){
x= -x;
}
if(!(l <= x && x <= r))
{
cerr << l << ' ' << r << ' ' << x << '\n';
assert(1 == 0);
}
return x;
} else {
assert(false);
}
}
}
string readString(int l,int r,char endd){
string ret="";
int cnt=0;
while(true){
char g=getchar();
assert(g!=-1);
if(g==endd){
break;
}
cnt++;
ret+=g;
}
assert(l<=cnt && cnt<=r);
return ret;
}
long long readIntSp(long long l,long long r){
return readInt(l,r,' ');
}
long long readIntLn(long long l,long long r){
return readInt(l,r,'\n');
}
string readStringLn(int l,int r){
return readString(l,r,'\n');
}
string readStringSp(int l,int r){
return readString(l,r,' ');
}
const int MAXT = 100000;
const int MAXN = 1000000;
int p[MAXN + 7];
vector<int> pr;
void seive() {
for(int i = 2; i <= MAXN; i++) {
if(p[i]) continue;
pr.push_back(i);
for(int j = i*2; j <= MAXN; j+=i)
p[j] = 1;
}
}
void solve()
{
int a = readInt(1,MAXN,' ');
int b = readInt(1,MAXN,'\n');
vector<pair<int, int>> aa,bb;
int cur = 0;
int prime = pr[cur];
while(prime*prime <= a) {
int cnt = 0;
while(a%prime == 0) a/=prime, cnt++;
if(cnt) aa.push_back({prime, cnt});
cur++;
prime = pr[cur];
}
if(a > 1) aa.push_back({a, 1});
cur = 0;
prime = pr[cur];
while(prime*prime <= b) {
int cnt = 0;
while(b%prime == 0) b/=prime, cnt++;
if(cnt) bb.push_back({prime, cnt});
cur++;
prime = pr[cur];
}
if(b > 1) bb.push_back({b, 1});
int bad = 0;
if(aa.size() != bb.size()) bad = 1;
for(int i = 0; i < aa.size(); i++) {
if(aa[i].first != bb[i].first) {
bad = 1;
break;
}
if(aa[0].second*bb[i].second != aa[i].second*bb[0].second) {
bad = 1;
break;
}
}
if(bad) cout << "NO\n";
else cout << "YES\n";
}
int main()
{
//ios_base::sync_with_stdio(false);
//cin.tie(NULL),cout.tie(NULL);
seive();
int T=readInt(1,MAXT,'\n');
while(T--)
solve();
assert(getchar()==-1);
cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
}