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 
from bisect import bisect_left as bl
from bisect import bisect_right as br
import heapq
import math
from collections import *
from functools import reduce,cmp_to_key
import sys
input = sys.stdin.readline
 
# M = mod = 998244353
def factors(n):return sorted(set(reduce(list.__add__, ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0))))
# def inv_mod(n):return pow(n, mod - 2, mod)
 
def li():return [int(i) for i in input().rstrip('\n').split()]
def st():return input().rstrip('\n')
def val():return int(input().rstrip('\n'))
def li2():return [i for i in input().rstrip('\n').split(' ')]
def li3():return [int(i) for i in input().rstrip('\n')]



def primefactors(n):
    l = []
    while not n%2:
        l.append(2)
        n//=2
    for i in range(3,int(math.sqrt(n)) + 1,2):
        while not n%i:
            l.append(i)
            n//=i
    if n>2:
        l.append(n)
    return l



# # https://www.geeksforgeeks.org/print-all-prime-factors-of-a-given-number/

# def primeFactors(n): 
# 	# Print the number of two's that divide n 
#     l = []
# 	while n % 2 == 0:
# 		l.append(2)
# 		n = n // 2
# 	# n must be odd at this point 
# 	# so a skip of 2 ( i = i + 2) can be used 
# 	for i in range(3,int(math.sqrt(n))+1,2): 
# 		# while i divides n , print i ad divide n 
# 		while n % i== 0:
# 			l.append(i)
# 			n = n // i
			
# 	# Condition if n is a prime 
# 	# number greater than 2 
# 	if n > 2:
# 		l.append(n)
#     return l







for _ in range(val()):
    l = sorted(primefactors(val()))
    ans = 'YES'
    if len(l) < 3:
        print('NO')
        continue
    first = l[0]
    second = 1
    # print(l)
    
    for i in range(1,len(l)-1):
        secondlast = l[i-1]
        second*=l[i]
        last = l[i]
    third = l[-1]
    if second == third:
        second//=last
        third*=last
    if third == first:
        second//=secondlast
        third*=secondlast
    if second == first or second == third or first == third or 1 in set([first,second,third]):
        print('NO')
        continue
    print('YES')
    print(first,second,third)
    
