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:
from functools import reduce

def factors(n):
    l = []
    for i in range(2,int(n**0.5)+1):
        if n%i==0:
            l.append(i)
            l.append(n//i)
    return l


for _ in range(int(input())):
    n = int(input())
    l = factors(n)


    flag = False
    flag1 = False
    flag2 = False

    for i in range(len(l)):
        a = l[i]
        b = n//a
        if a!=b:
            flag = True
            break
    if flag:
        # print(a,b,'****')
        p = factors(b)

        l1 = p
        for i in range(len(l1)):
            c = l1[i]
            d = b//c
            if c!=d and d!=a and c!=a:
                flag1 = True
                # print(a,c,d,'%%%%%%%%%%%5')
                break
        if flag1:

            print('YES')
            print(a,c,d)
        else:
            p = factors(a)
            # p.remove(1)
            # s.remove(a)
            l1 = list(p)
            for i in range(len(l1)):
                c = l1[i]
                d = a // c
                if d!=c and b!=d and c!=b:
                    flag2 = True
                    break
            if flag2:
                print('YES')
                print(c,d,b)
            else:
                print('NO')
    else:
        print('NO')