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:
t = int(input())

def yes(factors):
	print('YES')
	print(' '.join(map(str, factors)))

def no():
	print('NO')

for _ in range(t):
	temp = n = int(input())
	factors = []
	i = 2
	found = False
	while(i <= pow(n, 1/2)):
		while(n % i == 0):
			if len(factors) == 0 or i not in factors[-1]:
				factors.append({i:1})
			else:
				factors[-1][i] += 1

			n //= i
		i += 1
	if len(factors) >= 3:
		rv = [list(factors[0].keys())[0], list(factors[1].keys())[0]]
		temp //= rv[0]
		temp //= rv[1]
		rv.append(temp)
		yes(rv)
	elif len(factors) == 2:
		rv = [list(factors[0].keys())[0], list(factors[1].keys())[0]]
		temp //= rv[0]
		temp //= rv[1]
		if temp == rv[0] or temp == rv[1] or temp == 1:
			no()
		else:
			rv.append(temp)
			yes(rv)
	elif len(factors) == 1:
		factor = list(factors[0].keys())[0]
		if factors[0][factor] < 6:
			if(factors[0][factor] < 3):
				no()
			else:
				rv = [factor, factor*factor]
				temp //= rv[0]
				temp //= rv[1]
				if temp == rv[0] or temp == rv[1] or temp == 1:
					no()
				else:
					rv.append(temp)
					yes(rv)
		else:
			rv = [factor, factor*factor]
			temp //= rv[0]
			temp //= rv[1]
			rv.append(temp)
			yes(rv)
	else:
		no()