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

/* Name of the class has to be "Main" only if the class is public. */
public class Codechef
{
	public static void main (String[] args) throws java.lang.Exception
	{
		// your code goes here
		BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
		int t=Integer.parseInt(buf.readLine());
		StringBuilder sb=new StringBuilder();
		for(int j=0;j<t;j++)
		{
		    long n=Long.parseLong(buf.readLine());
		    long max=(long)(Math.ceil(Math.sqrt(n)));
		    int flag1=0,flag2=0;
		    long a=0,b=0,c=0;
		    for(long i=2;i<=max;i++)
		    {
		        if(n%i==0)
		        {
		            flag1=1;
		            a=i;
		            break;
		        }
		    }
		    if(flag1==0)
		    sb.append("NO"+"\n");
		    else
		    {
		        long r=n/a;
		        long max2=(long)(Math.ceil(Math.sqrt(r)));
		        for(long i=2;i<=max2;i++)
		        {
		            if(r%i==0 && i!=a)
		            {
		                flag2=1;
		                b=i;
		                break;
		            }
		        }
		        if(flag2==0)
		        sb.append("NO"+"\n");
		        else
		        {
		            long div=a*b;
		            if(n%div==0)
		            {
		                long g=n/div;
		                if(g!=a && g!=b && g!=1)
		                {
		                   c=g;
		                   sb.append("YES"+"\n"+a+" "+b+" "+c+"\n");
		                }
		                else
		                sb.append("NO"+"\n");
		            }
		            else
		            sb.append("NO"+"\n");
		        }
		    }
		}
		System.out.println(sb);
	}
}