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.Scanner;

public class productod3{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		int t = scan.nextInt();

		for(int k = 0; k < t; k++){

			int n = scan.nextInt();

			if(!func(n)){

				System.out.println("NO");

			}

		}

	}

	public static Boolean func(int n){


		if(n % 2 == 0){

			int aux = func2(n/2, 2);

			if(aux != 0 && aux != 2 && ((n / 2) / aux) * (2) * (aux) == n){

				System.out.println("YES");
				System.out.println((n/2)/aux + " " + 2 + " " + aux);

				return true;
			}
		}

		for(int i = 3; i < (int) Math.sqrt(n); i++){

			if(n % i == 0){

				int aux = func2(i, i);
				
				if(aux == 0){
					
					aux = func2(n / i, i);

				}

				if(aux != 0 && ((n/i)/aux) != i && ((n/i)/aux) != aux && i != aux && ((n/i) / aux) * (i) * (aux) == n){

					System.out.println("YES");
					System.out.println(((n / i) / aux) + " " + i + " " + aux);

					return true;

				}

			} 

		}

		return false;
	
	}
	
	public static int func2(int n, int d){

		if(n % 2 == 0){
			return 2;

		}

		for(int i = 3; i < Math.sqrt(n); i++ ){

			
			if(n % i == 0){

				return i;

			} 

		}
	
		return 0;	
	
	}
}