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 numpy as np
#import pandas as pd
#import os
#import matplotlib
#import seaborn as sns
#import matplotlib.pyplot as plt
#from tqdm import tqdm_notebook
#%matplotlib inline 
#import cv2 as cv
#import torch
#print(torch.__version__)
#torch.cuda.is_available()
#torch.version.cuda

def sqrt(p) :
  lo = 0.0
  hi = 1000000000.0
  for i in range(1, 64):
    mid = (lo + hi) / 2.0
    if(mid * mid > p):
      hi = mid
    else:
      lo = mid
  return (lo);
test = int(input())
def solve():
  n = int(input())
  dp = []
  lmt = int(sqrt(n) + 1);
  for i in range(2, lmt):
    if n % i == 0:
      while n % i == 0:
        dp.append(i)
        n /= i
      
  if n != 1:
    dp.append(n)
  #for i in dp:
  #  print(i)
  if len(dp) < 3:
    print("NO")
    return
  elif dp[0] == dp[len(dp) - 1]:
    dp[0] = (dp[0] * dp[1])
    last = 0
    for i in range(2, len(dp)):
      if i == len(dp) - 1:
        break
      if i == 2:
        last = dp[i]
      else:
        last = last * dp[i]
    
    if dp[0] == last or dp[len(dp) - 1] == last or last == 0:
      print("NO")
    else:
      print("YES")
      print(int(dp[0]), " ", int(dp[len(dp) - 1]), " ", int(last))
  else:
    last = 0
    for i in range(1, len(dp)):
      if i == len(dp) - 1:
        break
      if i == 1:
        last = dp[i]
      else:
        last = last * dp[i]
    if last == dp[0] or last == dp[len(dp) - 1] or last == 0:
      print("NO")
    else:
      print("YES")
      print(int(dp[0]), " " , int(last), " ", int(dp[len(dp) - 1]))
while test > 0:
  solve()
  test -= 1