#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 9;
const double ep = 1e-7;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const double pi = acos(-1);
int n, pri[maxn], cnt;
vector<int> fac;
void get_pri() {
  int nn = n;
  for (int i = 2; i * i <= nn; i++) {
    if (nn % i == 0) {
      pri[++cnt] = i;
      while (nn % i == 0) nn /= i;
    }
  }
  if (nn > 1) pri[++cnt] = nn;
}
void get_fac() {
  fac.emplace_back(n);
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      fac.emplace_back(i);
      if (i * i != n) fac.emplace_back(n / i);
    }
  }
}
queue<int> q;
bool vis[maxn];
void solve() {
  while (!q.empty()) q.pop();
  fac.clear();
  scanf("%d", &(n));
  cnt = 0;
  get_pri();
  get_fac();
  int tot = fac.size();
  for (register int i = (0); i <= (tot); ++i) vis[i] = 0;
  sort(pri + 1, pri + 1 + cnt);
  pri[cnt + 1] = pri[1];
  sort(fac.begin(), fac.end());
  pri[0] = pri[cnt];
  if (cnt == 2 && tot == 3) {
    printf("%d %d %d\n", fac[0], fac[1], fac[2]);
    puts("1");
    return;
  }
  if (cnt == 2) {
    for (int i = 0; i < tot; i++) {
      if (fac[i] % pri[1] == 0 && fac[i] % pri[2])
        printf("%d ", (fac[i])), vis[i] = 1;
    }
    printf("%d ", (pri[1] * pri[2]));
    for (int i = 0; i < tot; i++) {
      if (fac[i] == pri[1] * pri[2]) vis[i] = 1;
      if (vis[i]) continue;
      if (fac[i] % pri[2] == 0 && fac[i] % pri[1])
        printf("%d ", (fac[i])), vis[i] = 1;
    }
    for (int i = 0; i < tot; i++)
      if (!vis[i]) printf("%d ", (fac[i]));
    puts("");
    printf("%d\n", (0));
    return;
  }
  for (register int i = (1); i <= (cnt); ++i) {
    int pos = tot;
    for (int j = 0; j < tot; j++) {
      if (vis[j]) continue;
      if (fac[j] % pri[i] == 0) {
        if (fac[j] == pri[i] * pri[i + 1]) {
          pos = j;
          continue;
        }
        if (fac[j] == pri[i] * pri[i - 1]) continue;
        q.push(fac[j]);
        vis[j] = 1;
      }
    }
    if (pos != tot) q.push(fac[pos]), vis[pos] = 1;
  }
  while (!q.empty()) printf("%d ", (q.front())), q.pop();
  puts("");
  printf("%d\n", (0));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int T = 1;
  scanf("%d", &(T));
  while (T--) solve();
}
