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:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
//package ieee;

import java.util.Scanner;
import java.util.ArrayList;

/**
 *
 * @author LAPTOP
 */
public class IEEE {

    /**
     * @param args the command line arguments
     */
    public static boolean isprime (long  n )
    {
        if (n==2) return true;
        if(n<2 || n%2==0) return false ;
        for (long  i = 3 ; i*i<=n ; i+=2)
            if(n%i==0) return false;
        return true;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        int t  = sc.nextInt();
        while(t>0)
        {
            t--;
            int n = sc.nextInt();
            ArrayList <Integer> arr = new ArrayList<Integer>();
            for (int i = 2 ; i*i < n ; i++)
            {
                if (n%i==0)
                {
                    arr.add(i);
                     n/=i;
                }
                
                if (arr.size()==2)
                {
                    arr.add(n);
                    break;
                }
            }
            if (arr.size()<3  ) System.out.println("NO");
            else 
            {
                System.out.println("YES");
                for (int i = 0; i < 3; i++) {
                System.out.print(arr.get(i) +" ");
                }
                 System.out.println("");
            }
            
        }
    
    }
}