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, Counter, deque

INF = float('inf')

def gcd(a, b):
	while b:
		a, b = b, a%b
	return a


def primeFactor(n):
	if n % 2 == 0:
		return 2
	i = 3
	while (i ** 2) <= n:
		if n % i == 0:
			return i 
		i += 1
	return n

def main():
	n = int(input())
	
	num1 = 2
	l = math.ceil((n ** (1 / 3)))
	while num1 <= l:
		num2 = l
		while n % num1 == 0 and  num2 <= l * l:
			if n % (num1 * num2)  == 0:
				num3 = n // (num1 * num2)
				if num3 != 1 and num1 != num3  and num2 != num3 and num1 != num2:
					print('YES')
					print(num1, num2, num3)
					return
			num2 += 1
		
		num1 += 1
	num1 = 2
	while num1 <= l:
		num2 = num1 + 1
		while n % num1 == 0 and num2 <= l:
			if n % (num1 * num2)  == 0:
				num3 = n // (num1 * num2)
				if num3 != 1 and num1 != num3  and num2 != num3 and num1 != num2:
					print('YES')
					print(num1, num2, num3)
					return
			num2 += 1
		# print('#')
		num1 += 1
	print('NO')
	return

if __name__ == "__main__":
	t = int(input())
	# t = 1
	for _ in range(t):
		main()