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 math
from collections import defaultdict as dq

def primeFactors(n): 
	d=dq(int)
	while n % 2 == 0: 
		d[2]+=1
		n = n // 2

	for i in range(3,int(math.sqrt(n))+1,2): 
		while n % i== 0: 
			d[i]+=1
			n = n // i 
	if n>1:
		d[n]+=1
	return d

for _ in range(int(input())):
	n=int(input())
	s=primeFactors(n)
	if len(s)>2:
		c=0
		li=[]
		for i in s.keys():
			li.append(i)
			c+=1
			if c==2:
				break
		print("YES")
		print(li[0],li[1],n//(li[0]*li[1]))
	if len(s)==1:
		for i in s.keys():
			c=i
		if s[c]>=6:
			print("YES")
			print(c,c*c,n//(c*c*c))
		else:
			print("NO")
	if len(s)==2:
		li=[]
		for i in s.keys():
			li.append(i)
		if 	n//(li[0]*li[1]) in s.keys() or n//(li[0]*li[1])==1 :
			print("NO")
		else:
			print("YES")
			print(li[0],li[1],n//(li[0]*li[1]))