#include <bits/stdc++.h>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
void print(std::list<int> &a) {
  for (std::list<int>::iterator it = a.begin(); it != a.end(); ++it) {
    cout << *it << " ";
  }
  cout << endl;
}
void print(vector<int> &a) {
  for (int i = 0; i < a.size(); ++i) {
    cout << a[i] << " ";
  }
  cout << endl;
}
int main() {
  int tr;
  cin >> tr;
  while (tr--) {
    int n;
    cin >> n;
    std::list<int> deli;
    deli.push_back(n);
    for (int k = 2; k * k <= n; ++k) {
      if (n % k == 0) {
        deli.push_back(k);
        if (n / k != k) {
          deli.push_back(n / k);
        }
      }
    }
    vector<int> pr;
    vector<int> p;
    vector<int> alpha(100);
    int z = n;
    for (int i = 2; i * i <= n; ++i) {
      while (z % i == 0) {
        pr.push_back(i);
        z /= i;
      }
    }
    if (z > 1) {
      pr.push_back(z);
    }
    p.push_back(pr[0]);
    for (int i = 0; i < 100; ++i) {
      alpha[i] = 0;
    }
    alpha[0] = 1;
    int cur_ind = 0;
    for (int i = 1; i < pr.size(); ++i) {
      if (pr[i] == pr[i - 1]) {
        ++alpha[cur_ind];
      } else {
        p.push_back(pr[i]);
        ++cur_ind;
        ++alpha[cur_ind];
      }
    }
    if (p.size() == 1) {
      for (std::list<int>::iterator it = deli.begin(); it != deli.end(); it++) {
        cout << *it << " ";
      }
      cout << endl;
      cout << 0 << endl;
    } else {
      if (p.size() == 2) {
        if (alpha[0] * alpha[1] == 1) {
          cout << p[0] << " " << p[1] << " " << p[0] * p[1] << endl;
          cout << 1 << endl;
        } else {
          cout << p[0] << " ";
          int s = p[0];
          for (int j = 1; j < alpha[0]; ++j) {
            s *= p[0];
            cout << s << " ";
          }
          cout << p[1] * p[0] << " ";
          cout << p[1] << " ";
          s = p[1];
          for (int j = 1; j < alpha[1]; ++j) {
            s *= p[1];
            cout << s << " ";
          }
          int proiz = p[0] * p[1];
          for (std::list<int>::iterator it = deli.begin(); it != deli.end();
               it++) {
            if ((*it % proiz == 0) && (*it != proiz)) {
              cout << *it << " ";
            }
          }
          cout << endl;
          cout << 0 << endl;
        }
      } else {
        int last = p.size() - 1;
        int lastproiz = p[0] * p[last];
        for (int i = 0; i + 1 < p.size(); ++i) {
          cout << lastproiz << " " << p[i] << " ";
          int proiz = p[i] * p[i + 1];
          for (std::list<int>::iterator it = deli.begin(); it != deli.end();) {
            if (((*it % p[i] == 0) && (*it != proiz)) &&
                ((*it != lastproiz) && (*it != p[i]))) {
              cout << *it << " ";
              it = deli.erase(it);
            } else {
              ++it;
            }
          }
          lastproiz = proiz;
        }
        cout << lastproiz << " ";
        cout << p[last] << " ";
        int proiz = p[last] * p[0];
        for (std::list<int>::iterator it = deli.begin(); it != deli.end();
             it++) {
          if (((*it % p[last] == 0) && (*it != proiz)) &&
              ((*it != lastproiz) && (*it != p[last]))) {
            cout << *it << " ";
          }
        }
        cout << endl << 0 << endl;
      }
    }
  }
  return 0;
}
