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 
for _ in range(input()):
	n = input()
	dic = {}
	x = 2
	while x*x <= n:
		while n%x == 0:
			n /= x
			if x in dic:
				dic[x] += 1
			else:
				dic[x] = 1
		x += 1
	if n > 1:
		dic[n] = 1
	ans = []
	#print dic
	if len(dic) >= 3:
		for i in dic:
			ans.append(pow(i, dic[i]))
		while len(ans) > 3:
			val = ans.pop()
			ans[-1] *= val
		print "YES"
		print ' '.join([str(x) for x in ans])

	elif len(dic) == 2 and sum(dic.values()) <= 3:
		print "NO"

	elif len(dic) == 2:
		print "YES"
		vals = dic.keys()
		print vals[0], vals[1], pow(vals[0], dic[vals[0]]-1)*pow(vals[1], dic[vals[1]]-1)

	elif len(dic) == 1 and sum(dic.values()) >= 6:
		print "YES"
		vals = dic.keys()
		print pow(vals[0], 1), pow(vals[0], 2), pow(vals[0], dic[vals[0]]-3)
	
	else:
		print "NO"