#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5;
int T, N;
vector<pair<int, int> > getFact(int n) {
  vector<pair<int, int> > ret;
  pair<int, int> temp = make_pair(2, 0);
  while (n % 2 == 0) {
    temp.second++;
    n /= 2;
  }
  if (temp.second != 0) {
    ret.push_back(temp);
  }
  for (int i = 3; i <= sqrt(n); i += 2) {
    pair<int, int> temp = make_pair(i, 0);
    while (n % i == 0) {
      temp.second++;
      n /= i;
    }
    if (temp.second != 0) {
      ret.push_back(temp);
    }
  }
  if (n > 2) {
    ret.push_back(make_pair(n, 1));
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> T;
  while (T--) {
    cin >> N;
    vector<pair<int, int> > p = getFact(N);
    vector<int> ans;
    ans.push_back(1);
    for (int i = 0; i < p.size(); i++) {
      int sz = ans.size();
      int num = p[i].first;
      int x = 1;
      for (int power = 1; power <= p[i].second; power++) {
        x *= num;
        for (int j = sz - 1; j >= 0; j--) {
          ans.push_back(ans[j] * x);
        }
      }
    }
    swap(ans[ans.size() - 1], ans[ans.size() - 2]);
    for (int i = 1; i < ans.size(); i++) {
      cout << ans[i] << " ";
    }
    cout << "\n";
    if (p.size() == 2 && p[0].second == 1 && p[1].second == 1) {
      cout << "1\n";
    } else {
      cout << "0\n";
    }
  }
}
