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:
def f(n):
    d={}
    for i in range(2,int(pow(n,0.5))+1):
        if n%i==0:
            d[i]=0
            while n%i==0:
                d[i]=d[i]+1
                n=n//i
    if n!=1:
        d[n]=1
    return(d)
final=[]
t=int(input())
for i in range(0,t):
    n=int(input())
    d=f(n)
    values = list(d.values())
    keys=list(d.keys())
    if len(keys)>=3:
        ans='YES'
        x=n//(keys[0]*keys[1])
        final=[x,keys[0],keys[1]]
    elif len(keys)==2:
        if values[0] ==2 and values[1]==2:
            ans='YES'
            final=[keys[0],keys[1],keys[0]*keys[1]]
        elif values[0]>=3 or values[1]>=3:

            ans='YES'
            if d[keys[0]]>=3:
                final=[keys[0],keys[0]**(d[keys[0]]-1),keys[1]**(d[keys[1]])]
            else:
                final=[keys[1],keys[1]**(d[keys[1]]-1),keys[0]**(d[keys[0]])]

        else:
            ans='NO'
    else:
        if len(keys)==0:
            ans='NO'
        else:
            if values[0]>=6:
                ans='YES'
                final=[keys[0],keys[0]**2,n//(keys[0]**3)]
            else:
                ans='NO'
    if ans=='NO':
        print(ans)
    else:
        print(ans)
        for i in range(0,len(final)):
            print(final[i],end=' ')
        print()