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 JAVA):

Solution:


import java.math.BigInteger;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
 
public class T {
 
    
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
 
        int x = sc.nextInt();
 
int c=0;
int c1=0;
int c2=0;
int c3=0;
boolean t ;
for(int i =0 ; i<x;i++){
          int k = sc.nextInt();
          t=false;
    int v=k;
    c=0;
for(int j =2 ; j<Math.sqrt(v);j++){
    if(k%j==0 && c==0){
        c++;
        k/=j;
        
        c1=j;
        continue;
        
    }
  
           if(k%j==0 && c==1){
        c++;
        k/=j;
        
        c2=j;
        if(k<v &&k>c2){
            c3=k;
            t=true;
            c++;
            break;
             
        }
       
    }  
         
          

      
}
    if(t){
        System.out.println("YES");
        System.out.println(c1+" "+c2+" "+c3+" ");
    }else{
        System.out.println("NO");
    }  
 
c1=0;
c2=0;
c3=0;
}
    
    
    
 }}