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

public class vc2 {
//	public static int[]arr=new int[100001];
	public static void main(String[] args) {
		Scanner scn=new Scanner(System.in);
		int t=scn.nextInt();
//		prime();
		while(t-- !=0) {
			int n=scn.nextInt();
			int i=2;
			boolean found=false;
			int count=0;int[]a=new int[2];
			for(;i<Math.sqrt(n) && !found;i++) {
				if(n%i==0) {
					int m=n/i;
					for(int j=i+1;j<Math.sqrt(m);j++) {
						if(m%j==0) {
							System.out.println("YES");
							System.out.println(i+" "+j+" "+(m/j));
							found=true;
							break;
						}
					}
				}
			}
			if(!found)
				System.out.println("NO");
		}
	}
//	public static void prime() {
//		for(int i=2;i<100000;i++) {
//			if(arr[i]==0) {
//				for(int j=i+1;j<100000;j++) {
//					if(j%i==0 && arr[j]==0)
//					arr[j]=i;
//				}
//			}
//		}
//	}
}