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
import os
import sys
from math import *
from collections import *
from fractions import *
from bisect import *
from heapq import *
from io import BytesIO, IOBase
input = lambda: sys.stdin.readline().rstrip("\r\n")
def value(): return tuple(map(int, input().split()))
def arr(): return [int(i) for i in input().split()]
def sarr(): return [int(i) for i in input()]
def starr(): return [str(x) for x in input().split()]
def inn(): return int(input())
def svalue(): return tuple(map(str, input().split()))
mo = 1000000007
# ----------------------------CODE------------------------------#
def factors(n):         #return list
    return list(set(reduce(list.__add__,
                ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0))))
for _ in range(inn()):
    n=inn()
    res=factors(n)
    res.sort()
    res=res[1:len(res)-1]
    #print(res)
    if(len(res)>4):
        flag=0
        for i in range(len(res)-1):
            for j in range(i+1,len(res)):
                val=res[i]*res[j]
                if(n%val==0):
                    flag=1
                    print("YES")
                    print(res[i],res[j],n//val)
                    break
            if(flag==1):
                break
        if(flag==0):
            print("NO")
    else:
        print("NO")