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>
using namespace std;
template <typename T>
void inpos(T &x) {
  x = 0;
  register T c = getchar();
  while (((c < 48) || (c > 57)) && (c != '-')) c = getchar();
  bool neg = 0;
  if (c == '-') neg = 1;
  for (; c < 48 || c > 57; c = getchar())
    ;
  for (; c > 47 && c < 58; c = getchar()) x = (x << 3) + (x << 1) + (c & 15);
  if (neg) x = -x;
}
template <typename T>
void outpos(T n) {
  if (n < 0) {
    putchar('-');
    n *= -1;
  }
  char snum[65];
  long long i = 0;
  do {
    snum[i++] = n % 10 + '0';
    n /= 10;
  } while (n);
  i = i - 1;
  while (i >= 0) putchar(snum[i--]);
}
inline void instr(char *str) {
  register char c = 0;
  register long long i = 0;
  while (c < 33) c = getchar();
  while (c != '\n' && c != ' ' && c != EOF) {
    str[i] = c;
    c = getchar();
    ++i;
  }
  str[i] = '\0';
}
template <typename T, typename TT>
inline void inpos(T &n, TT &m) {
  inpos(n);
  inpos(m);
}
template <typename T, typename TT, typename TTT>
inline void inpos(T &n, TT &m, TTT &o) {
  inpos(n, m);
  inpos(o);
}
template <typename T, typename TT, typename TTT, typename TTTT>
inline void inpos(T &n, TT &m, TTT &o, TTTT &p) {
  inpos(n, m);
  inpos(o, p);
}
void functionA(long long n) {
  for (long long i = 2; i <= 1000; i++) {
    if (i > n || n % i != 0) {
      continue;
    }
    for (long long j = i + 1; j * j <= n; j++) {
      if (j > n || (n / i) % j != 0) {
        continue;
      }
      long long c = (n / i) / j;
      if (c != i && c != j) {
        cout << "YES\n" << i << " " << j << " " << c << '\n';
        return;
      }
    }
  }
  cout << "NO\n";
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long t;
  cin >> t;
  while (t--) {
    long long n;
    cin >> n;
    functionA(n);
  }
}