Problem: You are given one integer number n. Find three distinct integers a, b, c such that 2 ≤ a, b, c and a ⋅ b ⋅ c = n or say that it is impossible to do it.

If there are several answers, you can print any.

You have to answer t independent test cases.

Input

The first line of the input contains one integer t (1 ≤ t ≤ 100) — the number of test cases.

The next n lines describe test cases. The i-th test case is given on a new line as one integer n (2 ≤ n ≤ 10^9).

Output

For each test case, print the answer on it. Print "NO" if it is impossible to represent n as a ⋅ b ⋅ c for some distinct integers a, b, c such that 2 ≤ a, b, c.

Otherwise, print "YES" and any possible such representation.

Example

Input


5
64
32
97
2
12345


Output


YES
2 4 8 
NO
NO
NO
YES
3 5 823 

Solution (in PYTHON3):

Solution:
import math

t = int(input())
for i in range(t):
    n = int(input())
    L, a, r = [], n, []
    m = math.ceil(math.sqrt(n))
    f = False
    for j in range(2, m+1):
        if a % j == 0:
            c = 0
            while a % j == 0:
                a //= j
                c += 1
            L.append((j, c))
            if c >= 3:
                if c >= 6:
                    if j not in r: r.append(j)
                    if j * j not in r: r.append(j * j)
                    if j ** 3 not in r: r.append(j ** 3)
                    a *= j ** (c - 6)
                else:
                    if j not in r: r.append(j)
                    if j * j not in r: r.append(j * j)
                    a *= j ** (c - 3)
            else:
                if j not in r: r.append(j)
                a *= j ** (c - 1)
            if len(r) > 3:
                c = 1
                for k in range(3, len(r)):
                    c *= r[k]
                r[2] *= c
                while len(r) > 3: r.pop()
            if len(r) == 3:
                r[2] *= a
                f = True
                break
            elif len(r) == 2 and a > 1 and a != r[0] and a != r[1]:
                r.append(a)
                f = True
                break
    if f:
        print("YES")
        print(r[0], r[1], r[2])
    else: print("NO")