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

public class S96{
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int t=sc.nextInt();

		while(t-->0){
		int n=sc.nextInt();
		
	
		 if(isprime(n)==true){
		    System.out.println("NO");
		}
		else{
		    
		    ArrayList<Integer> al=new ArrayList<>();
		    int ans=0;int ti=0;
		    for(int i=2;i*i<=n;i++){
		        
		        if(n%i==0){
		            ans=i;
		            ti=n/ans;
		            al.add(ans);
		            break;
		        }
		        
		    }
		    
		    int an=0;
		     for(int i=2;i*i<=ti;i++){
		        
		        if(ti%i==0 && i!=ans){
		            an=i;
		            al.add(an);
		            break;
		        }
		        
		    }
		    
		    if(an>1){
		    if(!al.contains(ti/an) && an>1){
		        al.add(ti/an);
		    }
		    }
		    
		   if(al.size()==3){
		       System.out.println("YES");
		       System.out.println(ti/an+" "+ans+" "+an);
		   }
		   else{
		       System.out.println("NO");
		   }
		    
		    
		    
		}
	
	
	
		
		}

	}
	
	static boolean isprime(int n){
	    for(int i=2;i*i<=n;i++){
	        if(n%i==0){
	            return false;
	        }
	    }
	    
	    return true;
	}
}