N = 10**6+1 ps = list(range(N+1)) es = [0]*(N+1) vs = [1]*(N+1) for n in range(2,N+1): if ps[n] == n: for m in range(n,N+1,n): ps[m] = n p = ps[n] q = n // p if ps[q] == p: es[n] = es[q] + 1 vs[n] = vs[q] else: es[n] = 1 vs[n] = q def cuberoot(p, e, g): if g == 0: return True if g % p == 0: if g % p**3 != 0: return False return cuberoot(p, e-1, g // p**3) if p % 3 == 1: return pow(g, (p-1)//3, p) == 1 elif p % 3 == 2: return True else: assert p == 3 return any(x**3 % 9 == g % 9 for x in range(9)) for cas in range(int(input())): k, g = map(int, input().strip().split()) g = k**3 - g while k > 1: p = ps[k] e = es[k] k = vs[k] if not cuberoot(p, e, g % p**(3*e)): print("NO") break else: print("YES")