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:
cases = int(input())
def prime(n):
    for i in range(2,int((n+1)**0.5)):
        if n%i == 0:
            return False
    return True
for i in range(cases):
    num = int(input())
    if prime(num):
        print("NO")
        continue
    if num < 24:
        print("NO")
        continue
    n = num
    d = {}
    for j in range(2, int((n+1)**0.5)):
        while num%j == 0:
            if j not in d:
                d[j] = 1
            else:
                d[j] += 1
            num /= j
    if num > 1:
        if num not in d:
            d[num] = 1
        else:
            d[num] += 1
    ans = []
    if len(d) >= 3:
        two = 2
        print("YES")
        for key in d:
            if two == 0:
                break
            ans.append(key)
            d[key] -= 1
            two -= 1
        c = 1
        for ele in d:
            val = d[ele]
            c *= (ele**val)
        ans.append(int(c))
        print(int(ans[0]),int(ans[1]),int(ans[2]))
    elif len(d) == 2:
        for key in d:
            ans.append(key)
            d[key] -= 1
        c = 1
        for key in d:
            val = d[key]
            c *= key**val
        if c not in ans and c != 1:
            ans.append(int(c))
            print("YES")
            print(int(ans[0]),int(ans[1]),int(ans[2]))
        elif c in ans or c == 1:
            print("NO")
    elif len(d) == 1:
        val = list(d.values())
        if val[0] < 6:
            print("NO")
        else:
            a = int(list(d.keys())[0])
            b = int(list(d.keys())[0]**2)
            c = int(list(d.keys())[0]**(val[0]-3))
            print("YES")
            print(a,b,c)