#include <bits/stdc++.h>
using namespace std;
int N, K;
string s1;
int a[1000005], s[1000005];
int l[27], r[27];
bool chk(long long a, long long b);
int main() {
  scanf("%d", &N);
  int a, b;
  for (int i = 1; i <= N; i++) {
    scanf("%d%d", &a, &b);
    if (chk(a, b))
      puts("Yes");
    else
      puts("No");
  }
  return 0;
}
bool chk(long long a, long long b) {
  if (a == 1 && b == 1) return 1;
  if (b * b % a || a * a % b) return 0;
  if (a < b) swap(a, b);
  long long x3 = b * b / a;
  for (long long x = pow(x3, 1. / 3) - 2; x * x * x <= x3; x++) {
    if (x * x * x == x3) {
      if (x * a % b)
        return 0;
      else
        return 1;
    }
  }
  return 0;
}
