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
def factors(x):
    l=[]
    while(x>1):
        a=0
        for i in range(2,int(math.sqrt(x)+1)):
            if(x%i==0):
                l.append(i)
                a=1
                break
        if(a==0):
            l.append(x)
            break
        x=x//l[-1]
    return l
t=int(input())
while(t):
    n=int(input())
    l1 = factors(n)
    if(len(l1)<3):
        print("NO")
    elif(len(l1)==3):
        if((l1[0]!=l1[-1])and(l1[0]!=l1[1])and(l1[1]!=l1[-1])):
            print("YES")
            s=""
            for i in l1:
                s+=str(i)+" "
            print(s)
        else:
            print("NO")
    else:
        if(l1[0]==l1[1]):
            l1[1] = l1[1]*l1[2]
            l1.pop(2)
            i=3
            while(i<len(l1)):
                l1[2]*=l1[i]
                l1.pop(i)
            if((l1[0]!=l1[-1])and(l1[0]!=l1[1])and(l1[1]!=l1[-1])):
                print("YES")
                s=""
                for i in l1:
                    s+=str(i)+" "
                print(s)
            else:
                print("NO")
        else:
            i=3
            while(i<len(l1)):
                l1[2]*=l1[i]
                l1.pop(i)
            if((l1[0]!=l1[-1])and(l1[0]!=l1[1])and(l1[1]!=l1[-1])):
                print("YES")
                s=""
                for i in l1:
                    s+=str(i)+" "
                print(s)
            else:
                print("NO")
    t-=1