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.io.*;
import java.math.*;
import java.util.*;


// @author : Dinosparton [ SHIVAM BHUVA ]

public class test {
	 
	   static class Pair{ 
		   int x;
		   int y;
		   
		   Pair(int x,int y){ 
			   this.x = x;
			   this.y = y;
			   
		   }
	   }
	  
	   static class Compare { 
		   
		     void compare(Pair arr[], int n) 
		    { 
		        // Comparator to sort the pair according to second element 
		        Arrays.sort(arr, new Comparator<Pair>() { 
		            @Override public int compare(Pair p1, Pair p2) 
		            { 
		                return p1.x - p2.x; 
		            } 
		        }); 
		  
//		        for (int i = 0; i < n; i++) { 
//		            System.out.print(arr[i].x + " " + arr[i].y + " "); 
//		        } 
//		        System.out.println(); 
		    } 
		} 
	  
	   public static void main(String args[]) { 
		
		  Scanner sc = new Scanner(System.in);
		
		  StringBuffer res = new StringBuffer();
		  int tc= sc.nextInt();
		  
	        while(tc-->0) {
	 
	        long n = sc.nextLong();
	        
	        int a = 0;
	        int b = 0;
	        
	        for(int i = 2;i*i<=n;i++) { 
	        	if(n%i==0) { 
	        		a = i;
	        		n = n/i;
	        		break;
	        	}
	        }
	        
	        for(int i=a+1;i*i<=n;i++) { 
	        	if(n%i==0) { 
	        		b = i;
	        		n = n/i;
	        		break;
	        	}
	        }
	        
	        if(a!=n && b!=n && n!=1 && a!=0 && b!=1 && b!=0)
	        	res.append("YES").append("\n").append(a+" "+b+" "+n).append("\n");
	        else
	        res.append("NO").append("\n");
	        }
	        System.out.println(res);
	   }  
}