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 sys
input = sys.stdin.readline
# sys.setrecursionlimit(400000)
def I(): return input().strip()
def II(): return int(input().strip())
def LI(): return [*map(int, input().strip().split())]
import copy, string, math, time, functools, random, fractions
from heapq import heappush, heappop, heapify
from bisect import bisect_left, bisect_right
from collections import deque, defaultdict, Counter, OrderedDict
# from itertools import permutations, combinations, groupby
from operator import itemgetter
import itertools

for _ in range(II()):
    n = II()
    l = []
    while(n%2==0):
        l.append(2)
        n = n//2
    for i in range(3,int(math.sqrt(n))+1,2):
        while n%i == 0:
            l.append(i)
            n = n//i
    if n>2:
        l.append(n)
    p = len(set(l))
    z = len(l)


    if p == 1:

        if z >= 6:
            print("YES")
            print(l[0],end = ' ')
            print(l[1]*l[2],end = ' ')
            print(l[0]**(z-3))
        else:
            print("NO")

    elif p == 2:


        if z>=4:
            l.sort()
            y = 1
            m = list(set(l))
            v = m[0]
            k = m[1]
            l.remove(v)
            l.remove(k)
            print("YES")
            print(v,end = ' ')
            print(k,end = ' ')
            for i in range(len(l)):
                y = y*l[i]
            print(y)
        else:
            print("NO")


    elif p>2:

        print("YES")
        x=1
        if z == 3:
            print(*l)
        else:
            l.sort()
            for i in range(3, z):
                x = x * l[i]
            print(x, l[0], l[1] * l[2])