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 collections

class Solution:
    def solve(self, n):
        used = set()

        a = 2

        while a*a <= n:
            if n % a == 0 and a not in used:
                used.add(a)
                n //= a
                break

            a += 1

        b = 2

        while b*b <= n:
            if n % b == 0 and b not in used:
                used.add(b)
                n //= b
                break

            b += 1

        # print(used)

        if len(used) < 2 or n in used or n == 1:
            return (False, None)
        else:
            return (True, list(used) + [n])

        # Gets Time limit exceeded
        # for a in range(2,n//(2**2)+1):
        #     for b in range(2, a):
        #         for c in range(2, b):
        #             res = a*b*c

        #             if res == n:
        #                 return (True, sorted([c,b,a]))
        #             elif res > n:
        #                 break

        #         if a*b > n//2:
        #             break

        # return (False, None)

sol = Solution()

t = int(input().strip())

for i in range(t):
    n = int(input().strip())

    answer = sol.solve(n)

    if answer[0]:
        print("YES")
        print(" ".join(map(str, answer[1])))
    else:
        print("NO")