#include <bits/stdc++.h>
using namespace std;
bool table[100100];
set<long long> used;
vector<long long> divs, primedivs, primes, withprime[30];
long long x;
void getdivs(long long k) {
  for (int i = 2; i * i <= k; ++i) {
    if (k % i == 0) {
      divs.push_back(i);
      if (i * i != k) divs.push_back(k / i);
    }
  }
  divs.push_back(k);
  for (int i : primes) {
    if (k % i == 0) primedivs.push_back(i);
    while (k % i == 0) k /= i;
  }
  if (k != 1) primedivs.push_back(k);
}
void make_primes() {
  for (int i = 2; i <= 100000; ++i) {
    if (!table[i]) primes.push_back(i);
    for (int j = i * 2; j <= 100000; j += i) table[j] = 1;
  }
}
void solve() {
  cin >> x;
  divs = vector<long long>(0);
  primedivs = vector<long long>(0);
  for (int i = 0; i < 30; ++i) withprime[i] = vector<long long>(0);
  used.erase(used.begin(), used.end());
  getdivs(x);
  if (divs.size() == 2) {
    cout << divs[0] << " " << divs[1] << "\n";
    cout << "0\n";
    return;
  }
  if (divs.size() == 3) {
    if (divs[1] % divs[0] == 0) {
      cout << divs[0] << " " << divs[1] << " " << divs[2] << "\n";
      cout << "0\n";
    } else {
      cout << divs[0] << " " << divs[1] << " " << divs[2] << "\n";
      cout << "1\n";
    }
    return;
  }
  for (int i = 0; i < divs.size(); ++i) {
    for (int j = 0; j < primedivs.size(); ++j) {
      if (divs[i] % primedivs[j] == 0) {
        withprime[j].push_back(divs[i]);
      }
    }
  }
  for (int i = 0; i < primedivs.size(); ++i) {
    for (int j : withprime[i]) {
      if (i > 0)
        if (j == primedivs[i] * primedivs[i - 1]) continue;
      if (i != primedivs.size() - 1)
        if (j == primedivs[i] * primedivs[i + 1]) continue;
      if (j == x) continue;
      if (used.find(j) == used.end()) {
        cout << j << " ";
        used.insert(j);
      }
    }
    if (i == primedivs.size() - 1)
      cout << x << "\n";
    else if (used.find(primedivs[i] * primedivs[i + 1]) == used.end()) {
      cout << primedivs[i] * primedivs[i + 1] << " ";
      used.insert(primedivs[i] * primedivs[i + 1]);
    }
  }
  cout << "0\n";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  make_primes();
  int t;
  cin >> t;
  while (t--) solve();
  return 0;
}
