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

public class task_c {
	public String answer;
	public boolean correct;
	public task_c() {
		Scanner scanner = new Scanner(System.in);
		int number = scanner.nextInt();
		for (int i = 0; i<number; i++) {
			int zahl = scanner.nextInt();
			answer = "";
			correct = false;
			recursion(zahl, 3, 2);
			if (correct) {
				System.out.println("YES");
				System.out.println(answer);
			}
			else {
				System.out.println("NO");
			}
		}
		scanner.close();
	}
	public void recursion(int number, int amount, int last) {
		if (amount == 1) {
			if (number>=last) {
				answer = answer + number;
				correct = true;
			}
		}
		else if (last>Math.pow(number, 0.5)) {
			correct = false;
		}
		else {
			for (int j = last; j<(int)Math.pow(number, 0.5)+1; j++) {
				if (number%j==0) {
					answer = answer+ j + " ";
					recursion(number/j, amount-1, j+1);
					break;
				}
			}
		}
		
	}
	public static void main(String[] args) {
		new task_c();
	}
	
}
