#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
inline long long read() {
  long long X = 0, w = 0;
  char ch = 0;
  while (!isdigit(ch)) {
    w |= ch == '-';
    ch = getchar();
  }
  while (isdigit(ch)) X = (X << 3) + (X << 1) + (ch ^ 48), ch = getchar();
  return w ? -X : X;
}
inline char power_getchar() {
  static char buf[200000], *p1 = buf, *p2 = buf;
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 200000, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline long long _read() {
  long long X = 0, w = 0;
  char ch = 0;
  while (!isdigit(ch)) {
    w |= ch == '-';
    ch = power_getchar();
  }
  while (isdigit(ch)) X = (X << 3) + (X << 1) + (ch ^ 48), ch = power_getchar();
  return w ? -X : X;
}
inline void write(long long x) {
  if (x < 0) putchar('-'), x = -x;
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
int main() {
  int T = read();
  while (T--) {
    long long n = read();
    bool f = false;
    int sq = 0;
    for (int i = 1; i * i * i <= n; i++) sq = i;
    for (int i = 2; i <= sq; i++) {
      int sqq = sqrt(n / i);
      for (int j = i + 1; j <= sqq; j++) {
        int tmp = n / i / j;
        if (n % i == 0 && (n / i) % j == 0 && (tmp != i && tmp != j) &&
            tmp >= 2) {
          puts("YES");
          printf("%d %d %d\n", i, j, n / i / j);
          f = true;
          break;
        }
      }
      if (f) break;
    }
    if (!f) puts("NO");
  }
  return 0;
}
