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.io.*;
import java.util.*;
import java.math.*;
     
public class Main{
	public static void main(String[] args) throws Exception {
	IO io = new IO();
	PrintWriter out = new PrintWriter(System.out);
	Solver sr = new Solver();
	sr.solve(io,out);
	out.flush();
	out.close();
    	}

	static class Solver
	{
	    class Pair
	    {
	        int x, y;
	        public Pair(int a, int b)
	        {
	            x=a;
	            y=b;
	        }
	    }
	    void solve(IO io, PrintWriter out)
	    {
	       int i, j;
           int t = io.nextInt();
           while(t-->0)
           {
               
               int n = io.nextInt();
               boolean flag=false;
               int a=0, b=0, c=0;
               for(i=2 ; i*i<=n ; i++)
               {
                   if(n%i==0 && n/i!=i)
                   {
                       int m = n/i;
                       for(j=i+1 ; j*j<=m ; j++)
                       {
                           if(m%j==0 && m/j!=j)
                           {
                               a=i;
                               b=j;
                               c=m/j;
                               flag=true;
                                break;
                           }
                       }
                   }
                   if(flag)
                    break;
               }
               if(!flag)
                    out.println("NO");
                else
                    out.println("YES\n"+a+" "+b+" "+c);
           }
            
	    }
	}
	//Special thanks to Petr (on codeforces) who inspired me to implement IO class!
	static class IO
	{
    	BufferedReader reader;
        StringTokenizer tokenizer;
    	public IO() {
                reader = new BufferedReader(new InputStreamReader(System.in));
                tokenizer = null;
            }
     
        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }
        public String nextLine() {
            String s="";
            try {
                    s=reader.readLine();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            return s;
        }
        public int nextInt() {
            return Integer.parseInt(next());
        }
    
        public long nextLong() {
            return Long.parseLong(next());
        }
    	double nextDouble()
    	{
    		return Double.parseDouble(next());
    	}
	}
}