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 

#create a string in which no two same  char comes together.
# assumption only small albhabetical letters used
#input format: just enter the string without any space
import sys
import math
input = sys.stdin.readline
 
############ ---- Input Functions ---- #######Start#####
def inp():
	return(int(input()))
def inlt():
	return(list(map(int,input().split())))
def insr():
	s = input()
	return(list(s[:len(s) - 1]))
def invr():
	return(map(int,input().split()))
 ############ ---- Input Functions ---- #######End#####   
def pr_list(a):
	print(*a, sep=" ")
def main():
	tests = inp()
	for test in range(tests):
		n =  inp()
		n1 = math.sqrt(n) + 2
		out = []
		flag = 1
		i = 2
		while(i<n1  and len(out)< 3):
			if n %i == 0 :
				n = int(n/i)
				n1 = math.sqrt(n) + 2
				if i not in out:
					out.append(i)
				if len(out) == 2 and n not in out and n!=1:
					out.append(n)
					break
			i = i + 1
		if len(out) == 3:
			print("YES")
			pr_list(out)
		else:
			print("NO")

				






		



	return




	#time o(2n) space o(26*2)

	#sorted(hashm.items(), key=lambda item: item[1])

if __name__== "__main__":
  main()