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

public class Main 
{ 
	public static void main(String[] args) throws Exception
	{
		Scanner sc = new Scanner(System.in) ; 
		PrintWriter out = new PrintWriter(System.out) ; 
		int t = sc.nextInt() ; 
		while(t-->0)
		{
			int [] factors = new int [32] ; 
			int id = 0 ; 
			int n = sc.nextInt() ; 
			for(int i = 2 ; 1l * i * i <= n ; i++)
				while(n % i == 0)
				{
					n /= i ; 
					factors[id++] = i ; 
				}
			if(n > 1)
				factors[id++] = n;
			id = 0 ;
			int a = factors[id++] ; 
			int b = factors[id++] ; 
			if(a == b)
				b *= factors[id++] ; 
			int c = factors[id++] ; 
			if(c == 0 || b == 0 || a == 0)
				out.println("NO");
			else 
			{
				while(id < 32 && factors[id] != 0) c *= factors[id++];
				if(a != b && a != c && b != c)
					out.printf("YES \n%d %d %d\n" , a , b , c);
				else 
					out.println("NO");
			}
		}
		out.flush();
		out.close();
	}
}