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 sys import stdin,stdout
from collections import Counter
from math import ceil
from bisect import bisect_left 
from bisect import bisect_right
import math

ai = lambda: list(map(int, stdin.readline().split()))
ei = lambda: map(int, stdin.readline().split())
ip = lambda: int(stdin.readline().strip())

def primeFactors(N,li):
	while N % 2 == 0:
		li.append(2)
		N//=2

	for i in range(3,int(math.sqrt(N))+1,2):
		while N%i == 0:
			li.append(i)
			N //= i

	if N > 2:
		li.append(N)

	return li


 #2 2 2 2 2 2
n = ip()
for i in range(n):
	pf = primeFactors(ip(),[])
	#print(pf)
	if len(set(pf)) == 3 and len(pf) == 3:
		print('YES')
		print(*pf)
	elif len(pf) < 3:
		print('NO')
	else:
		# a,b,c= pf[0],pf[1]*pf[2],1
		# for i in range(3,len(pf)):
		# 	c *= pf[i]

		a,b,c = pf[0],1,1
		for i in range(1,len(pf)):
			if b <= a:
				b *= pf[i]
			else:
				c *= pf[i]
		if c != b and c != a and c!= 1:
			print('YES')
			print(a,b,c)
		else:
			print('NO')


