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 CPP):

Solution:
#include <bits/stdc++.h>
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    int n;
    scanf("%d", &n);
    int flag, a, b, c;
    flag = 1;
    if (n % 2 == 0) {
      a = 2;
      flag = 0;
    } else
      for (a = 3; a * a * a <= n; a += 2)
        if (n % a == 0) {
          flag = 0;
          break;
        }
    if (!flag) {
      int flag2 = 0;
      n /= a;
      flag = 1;
      if (n % 2 == 0) flag2 = 1;
      for (b = a; b * b <= n;) {
        if ((n % b == 0) && (a != b)) {
          flag = 0;
          break;
        }
        b++;
      }
      if (!flag) {
        n /= b;
        flag = 1;
        if ((n != a) && (n != b) && (n >= 2)) flag = 0;
      }
    }
    if (flag)
      printf("NO\n");
    else
      printf("YES\n%d %d %d\n", a, b, n);
  }
  return 0;
}