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
import math
from math import gcd
from heapq import heappop
from heapq import heappush
from heapq import heapify
from bisect import insort
from bisect import bisect_right
from bisect import bisect_left
from sys import stdin,stdout
from collections import defaultdict, deque
from math import log2, ceil, floor

inp=lambda : int(input())
sip=lambda : input()
mulip =lambda : map(int,input().split())
lst=lambda : list(map(int,input().split()))
slst=lambda: list(sip())
arr2d= lambda x: [[int(j) for j in input().split()] for i in range(x)]
odds = lambda l: len(list(filter(lambda x: x%2!=0, l)))
evens = lambda l: len(list(filter(lambda x: x%2==0, l)))
mod = pow(10,9)+7
#-------------------------------------------------------
Judge = 0
if Judge:
    sys.stdin = open("input.in",'r')
    #sys.stdout = open("output.in",'w')

for _ in range(inp()):
    n = inp()
    x = n
    d = {}
    i = 2 
    while i*i <= x:
        cnt = 0
        while(n%i==0 and n!=0):
            n = n//i
            #print(n,i)
            cnt += 1
            d[i] = cnt 
        i += 1
    if n>2:
       d[n] = 1 
    if len(d)==0:
        print("NO")
    elif len(d)==1:
        l = list(d.keys())
        if d[l[0]]>=6:
            print("YES")
            print(l[0],pow(l[0],2),pow(l[0],d[l[0]]-3))
        else:
            print("NO")
    elif len(d)==2:
        l = list(d.keys())
        if d[l[0]]+d[l[1]]>=4:
            print("YES")
            print(l[0],l[1],x//(l[0]*l[1]))
        else:
            print("NO")

    else:
        l = list(d.keys())
        print("YES")
        print(pow(l[0],d[l[0]]),pow(l[1],d[l[1]]),end=" ")
        ans = 1 
        for i in range(2,len(l)):
            ans *= pow(l[i],d[l[i]])
        print(ans)