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:
#-----------------
# cook your dish here
#############-----------------
######-----
import math
###########
#####
try:
    #######
    def func1(t2,io):#############
        ######
        ##########
        if len(io) >= 3 and len(t2) >= 3:######
            ##########
            y = t2[1]######
            #######
            x = t2[0]#######3
            #####
            z = n//(x*y)########
            ############
            return [x,y,z]#########
            ######
        elif len(io) >= 6 and len(t2) == 1:############33
            #######
            y = pow(t2[0], 2)##
            ######
            x = t2[0]##########
            #########
            #######
            ######
            ##########
            z = n // pow(x, 3)############
            ############
            return [x,y,z]
        elif len(io) >= 4 and len(t2) == 2:##########
            #####
            y = t2[1]##################
            ######
            x = t2[0]######
            ######
            z = n // (y*x)#########
            ##########
            return [x,y,z]#######
        else:
            ##########
            return "NO"#######3

    def func2(l):
        ############
        io = []###########
        ###########
        while l%2 == 0:########
            ########
            io.append(2)######
            #########
            l = l//2###
            ########
        for p in range(3, int(math.sqrt(l)) + 1, 2):##########
            #############
            while (l%p == 0):###########
                ###########
                io.append(p)##########
                ########
                l = l//p
                ##########
        if l > 2:#########
            ######
            io.append(l)########
        return io########
        #########
    tyu = int(input())########
    ########
    for tyc in range(tyu):#########
        ###########
        n = int(input())#####
        #############
        io = func2(n)
        t2 = list(set(io))#########
        ##############
        gy = func1(t2,io)######
        #############
        if gy=='NO':#######
            #####
            print("NO")##########
        else:
            ###########
            print("YES")###3
            print(*gy)###
    ###########
    #######
    ##########
        continue  #######
    ############
except:
    pass
##########
################
#####

#############







##########################