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
cin = stdin.readline
cout = stdout.write
mp = lambda:list(map(int, cin().split()))

t, = mp()
for _ in range(t):
	n, = mp()
	
	if n < 24:
		cout('NO\n')
		continue
	y = int(n**.5)
	l = []
	for i in range(2, y+1):
		if not n%i:
			l += [i, n//i]
	
	if len(l)<4:
		cout('NO\n')
		continue
	l.sort()
	#print(l)
	for i in range(len(l)):
		if not n%(l[i]*l[i+1]) and l[i]*l[i+1] < n and (n//(l[i]*l[i+1]) != l[i] and n//(l[i]*l[i+1]) != l[i+1]):
			cout('YES\n')
			cout(str(l[i]) + ' ' + str(l[i+1]) + ' ' + str(n//(l[i]*l[i+1])) + '\n')
			break
		elif l[i]*l[i+1] >= n:
			cout('NO\n')
			break
	#print(l)
	