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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class pre372
{
    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new
                    InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }
    public static void main(String args[])
    {
        FastReader obj = new FastReader();
        int tc = obj.nextInt();
        while(tc--!=0)
        {
           int n = obj.nextInt();
           boolean flag = true;
            ArrayList<Integer> arr = new ArrayList<>();
           for(int i=2;i<=Math.sqrt(n);i++)
           {
               if(n%i==0 && !arr.contains(i))
               {
                   n /=i;
                   arr.add(i);
                   break;
               }
           }
           for(int i=2;i<=Math.sqrt(n);i++)
           {
               if(n%i==0 && !arr.contains(i))
               {
                   n /=i;
                   arr.add(i);
                   break;
               }
           }
          if(arr.size()<2 || arr.contains(n))System.out.println("NO");
          else
          {
              System.out.println("YES");
              for(int i=0;i<2;i++)
                  System.out.print(arr.get(i)+" ");
              System.out.print(n);
              System.out.println();
          }
        }
    }
}
