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 sys
input=sys.stdin.readline
t=int(input())
import math 
def primeFactors(n):
    factor=[]
    number=[]
    while n % 2 == 0:
        factor.append(2)
        n = n / 2
    for i in range(3,int(math.sqrt(n))+1,2): 
        while n % i== 0:
            factor.append(int(i))
            n = n / i
    if n > 2:
        factor.append(int(n))
    return(factor)
for i in range(t):
    n=int(input())
    ffactor=(primeFactors(n))
    #print(ffactor)
    ffactor2=list(set(ffactor))
    if len(ffactor2)>=3:
        print("YES")
        print(int(ffactor2[0]),int(ffactor2[1]),int(n/(ffactor2[1]*ffactor2[0])))
    elif len(set(ffactor))>=2 and len(ffactor)>=4:
        print("YES")
        print(int(ffactor2[0]),int(ffactor2[1]),int(n/(ffactor2[1]*ffactor2[0])))
    elif len(ffactor2)>=1 and len(ffactor)>=6:
        print("YES")
        first=int(ffactor2[0])
        sec=int((ffactor2[0])**2)
        third=int(n/(first*sec))
        print(int(first),int(sec),int(third))
    else:
        print("NO")