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:
from functools import reduce
def is_prime(n):
    if n == 1:
        return False
    i = 2
    while i*i <= n:
        if n % i == 0:
            return False
        i += 1
    return True
def factors(n):    
    return set(reduce(list.__add__, 
                ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))    
t = int(input())
while(t):
    t-=1
    n = int(input())
    b=True
    l=[]
    if is_prime(n):
        print("NO")
        continue
    elif int(n**0.5)==n**0.5:
        if is_prime(n**0.5):
            print("NO")
            continue
        elif int(n**0.25)==n**0.25:
            if is_prime(n**0.25):
                print("NO")
                continue
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            n = int(n/i)
            s = sorted(list(factors(n)))
            if 1 in s:
                s.pop(s.index(1))
            if n in s:
                s.pop(s.index(n))
            if len(s)>1:
                for ii in range(len(s)):
                    if s[ii]>i:
                        j=s[ii]
                        k=s[len(s)-ii-1]
                        if j!=k and i!=k:
                            l.append(i)
                            l.append(j)
                            l.append(k)
                            print("YES")
                            print(*l)
                            b=False
                            break
        if not b:
            break
    if b:
        print("NO")