You are given one integer number $n$. Find three distinct integers $a, b, c$ such that $2 \le a, b, c$ and $a \cdot b \cdot 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 \le t \le 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 \le n \le 10^9$).


-----Output-----

For each test case, print the answer on it. Print "NO" if it is impossible to represent $n$ as $a \cdot b \cdot c$ for some distinct integers $a, b, c$ such that $2 \le 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

Difficulty: introductory

Starter code:

Solutions:
#-------------Program--------------
#----Kuzlyaev-Nikita-Codeforces----
#-------------Round615-------------
#----------------------------------

t=int(input())
for i in range(t):
    n=int(input())
    a=[]
    for i in range(2,int(n**0.5)+2):
        if len(a)==2:
            a.append(n)
            break        
        if n%i==0:
            a.append(i)
            n//=i
    a=list(set(a))
    if len(a)==3 and a.count(1)==0:
        print('YES')
        a.sort()
        print(a[0],a[1],a[2])
    else:
        print('NO')


def Fenjie(n):
    k = {}
    if (n == 1):
        return {}
    a = 2
    while (n >= 2):
        b = n%a
        if (a*a > n):
            if (n in k):
                k[n] += 1
            else:
                k[n] = 1
            break
        if (b == 0):
            if (a in k):
                k[a] += 1
            else:
                k[a] = 1
            n = n//a
        else:
            a += 1
    return k

n = int(input())
for _ in range(n):
    m = int(input())
    k = Fenjie(m)
    s = 0
    le = len(k)
    l = [i for i in k]
    if (le >= 3):
        print("YES")
        flag = 0
        print(l[0], l[1], m//l[0]//l[1])
    elif (le==2):
        if (k[l[0]]+k[l[1]] >= 4):
            print("YES")
            print(l[0], l[1], m//l[0]//l[1])
        else:
            print("NO")
    else:
        if (k[l[0]] >= 6):
            print("YES")
            print(l[0], l[0]*l[0], m//l[0]//l[0]//l[0])
        else:
            print("NO")

t = int(input())
for _ in range(t):
    n = int(input())
    test = 2
    out = []
    while len(out) < 2 and test * test < n:
        if n % test == 0:
            out.append(test)
            n //= test
        test += 1
        
    if len(out) == 2 and n > out[1]:
        print('YES')
        print(out[0], out[1], n)
    else:
        print('NO')


from math import sqrt as S 
def div(x):
    d=[]
    if x==1:
        return [1]
    if x==2:
        return [1,2]
    cnt=[1,n]
    for i in range(2,int(S(x))+1):
        if x %i==0:
            cnt.append(i) 
    return cnt 
def check(arr):
    if 1 in arr or 0 in arr:
        return 0 
    return len(set(arr))==3 

import sys 
input=sys.stdin.readline 
t=int(input())
ans=[]
for i in range(t): 
    n=int(input()) 
    f=0 
    cnt=div(n)
    for x in cnt : 
        y=n//x
        if f: break 
        for z in div(y):
            if check([x,z,y//z]):
                ans=[x,z,y//z]
                f=1 
                break 
    if f:
        print('YES')
        print(*ans)
    else:
        print('NO')

from math import sqrt

def divide(n, start):
    for k in range(start, int(sqrt(n)) + 1):
        if n % k == 0:
            return k
    return n


for _ in range(int(input())):
    n = int(input())
    a = divide(n, 2)
    if a == n:
        print('NO')
        continue
    n //= a
    b = divide(n, a + 1)
    if b == n:
        print('NO')
        continue
    n //= b
    if n <= b:
        print('NO')
        continue
    print('YES')
    print(a, b, n)


import sys
input = sys.stdin.readline

t=int(input())

import math

def f(x):
    
    xr=math.ceil(math.sqrt(x))

    LIST=[]
    for i in range(1,xr+1):
        if x%i==0:
            LIST.append(i)
            LIST.append(x//i)

    return sorted(set(LIST))[1:]


for test in range(t):
    n=int(input())
    L=f(n)

    A=L[0]

    for i in f(n):
        if i!=A and i*A<n and n%(i*A)==0 and n//(i*A)!=i and n//(i*A)!=A and n//(i*A)!=1:
            print("YES")
            print(A,i,n//(i*A))
            break

    else:
        print("NO")
    
    


import sys
input = sys.stdin.readline

def factors(n):
	ret = set()
	for i in range(2, int(n**.5) + 1):
		if n%i == 0:
			ret.add(i)
			ret.add(n//i)
	return ret

def solve(n):
	for i in range(2, int(n**.5)+1):
		if n%i == 0 and i != n//i:
			a, b = i, n//i
			fa, fb = factors(a), factors(b)
			# option 1
			if len(fa) > 0:
				for fac in fa:
					if len(set([fac, a//fac, b])) == 3:
						return [fac, a//fac, b]
			# option 2
			if len(fb) > 0:
				for fac in fb:
					if len(set([fac, b//fac, a])) == 3:
						return [fac, b//fac, a]
	return 'NO'


for _ in range(int(input())):
	n = int(input())
	ans = solve(n)
	if ans == 'NO':
		print('NO')
	else:
		print('YES')
		print(*sorted(ans))

def main():
    n = int(input())
    a = 2
    while a * a * a < n:
        if n % a == 0:
            b = a + 1
            while b * b < n // a:
                if (n // a) % b == 0:
                    c = n // a // b
                    if a != c and b != c:
                        print("YES")
                        print(a, b, n // a // b)
                        return 0
                b += 1
        a += 1
    print("NO")
p = int(input())
for i in range(p):
        main()

from math import sqrt
T = int(input())
for z in range(T):
    N = int(input())
    num = N
    i = 2
    nums = []
    found = 0
    s = int(sqrt(N))
    while i<= s:
        if num % i == 0:
            nums.append(i)
            num = num //i
            found += 1
            if found == 2:
                if num not in nums:
                    found = 3
                    nums.append(num)
                    break
        i += 1
    if found == 3:
        print("YES")
        print(*nums)
    else:
        print("NO")



from functools import reduce
def factors(n):
    k = sorted(list(set(reduce(list.__add__,
                     ([i,n//i] for i in range(1,int(n**0.5+1)) if n%i == 0)))))
    return k[1:]
t = int(input())
for _ in range(0,t):
    n = int(input())
    f = factors(n)
    if len(f) < 3:
        print('NO')
    else:
        ans = 'NO'
        a,b,c = -1,-1,-1
        for i in range(0,len(f)):
            for j in range(i+1,len(f)):
                 temp = n//f[i]
                 temp //= f[j]
                 if temp in f and temp != f[i] and temp != f[j]:
                     a,b,c = f[i],f[j],temp
                     ans = 'YES'
                     break
            if ans == 'YES':
                break
        if ans == 'YES':
            print(ans)
            print(a,b,c)
        else:
            print(ans)




t = int(input())
for a in range(t):
    n = ori = int(input())
    num = []
    for b in range(2,int(ori**0.5)+1):
        # print(n)
        if n % b == 0:
            num.append(b)
            n = n//b
            if len(num) == 2:
                if n != 1:
                    num.append(n)
                break
    num = list(set(num))
    if len(num) == 3:
        print("YES")
        print(" ".join(map(str, num)))
    else:
        print("NO")