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

import javax.lang.model.util.ElementScanner6;

import java.lang.*;
import java.io.*;

public class Solution
{
    public static void main(String args[])throws IOException
    {/*
        InputStreamReader isr=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(isr);
        int a=Integer.parseInt(br.readLine());*/
        FastReader in=new FastReader(System.in);
        long n,d,d2,a,b,c;
        long i,j,k=0;
        
        int t=in.nextInt();
        for(i=0;i<t;i++)
        {
            n=in.nextLong();
            d=n;
            d2=(long)Math.sqrt(n)+1;
            int fg=0;
            a=0;
            b=0;
            c=0;
            if(n==3 || n==2 || n==1 || n==0)
            {
                System.out.println("NO");
            }
            for(j=2;j<d2;j++)
            {
                if(d%j==0 && fg==0)
                {
                    a=j;
                    fg=1;
                    d=d/a;
                }
                else if(d%j==0 && fg==1)
                {
                    b=j;
                    c=d/b;
                    if(a==c || b==c)
                    {
                        j=a+1;
                        a=0;b=0;c=0;
                        d=n;
                        fg=0;
                    }
                    else
                    {
                        System.out.println("YES");
                        System.out.println(a+" "+b+" "+c);
                        break;
                    }
                }
                else
                {
                    ;
                }
                if(j>=d)
                {
                    System.out.println("NO");
                    break;
                }
                if(j==d2-1)
                {
                    if(c==0)
                    System.out.println("NO");
                }
            }
        }
    }
}

class FastReader {
 
    byte[] buf = new byte[2048];
    int index, total;
    InputStream in;
 
    FastReader(InputStream is) {
        in = is;
    }
 
    int scan() throws IOException {
        if (index >= total) {
            index = 0;
            total = in.read(buf);
            if (total <= 0) {
                return -1;
            }
        }
        return buf[index++];
    }
 
    String next() throws IOException {
        int c;
        for (c = scan(); c <= 32; c = scan()) ;
        StringBuilder sb = new StringBuilder();
        for (; c > 32; c = scan()) {
            sb.append((char) c);
        }
        return sb.toString();
    }
 
    String nextLine() throws IOException {
        int c;
        for (c = scan(); c <= 32; c = scan()) ;
        StringBuilder sb = new StringBuilder();
        for (; c != 10 && c != 13; c = scan()) {
            sb.append((char) c);
        }
        return sb.toString();
    }
 
    char nextChar() throws IOException {
        int c;
        for (c = scan(); c <= 32; c = scan()) ;
        return (char) c;
    }
 
    int nextInt() throws IOException {
        int c, val = 0;
        for (c = scan(); c <= 32; c = scan()) ;
        boolean neg = c == '-';
        if (c == '-' || c == '+') {
            c = scan();
        }
        for (; c >= '0' && c <= '9'; c = scan()) {
            val = (val << 3) + (val << 1) + (c & 15);
        }
        return neg ? -val : val;
    }
 
    long nextLong() throws IOException {
        int c;
        long val = 0;
        for (c = scan(); c <= 32; c = scan()) ;
        boolean neg = c == '-';
        if (c == '-' || c == '+') {
            c = scan();
        }
        for (; c >= '0' && c <= '9'; c = scan()) {
            val = (val << 3) + (val << 1) + (c & 15);
        }
        return neg ? -val : val;
    }
}