#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int tc;
  cin >> tc;
  while (tc--) {
    int n;
    cin >> n;
    set<int> d;
    for (int d1 = 1; d1 * d1 <= n; d1++) {
      if (n % d1) continue;
      int d2 = n / d1;
      if (d1 != 1) d.emplace(d1);
      if (d1 != d2) d.emplace(d2);
    }
    if (int(d.size()) == 1) {
      cout << n << '\n';
      cout << 0 << '\n';
      continue;
    }
    vector<vector<int> > ans;
    int m = n;
    for (int p = 2; p * p <= m; p++) {
      if (m % p) continue;
      ans.push_back({p});
      d.erase(p);
      while (m % p == 0) m /= p;
    }
    if (m != 1) {
      ans.push_back({m});
      d.erase(m);
    }
    sort(begin(ans), end(ans));
    int need = int(ans.size());
    for (int i = 0; i < int(ans.size()); i++) {
      int p = ans[i].front();
      int q = ans[(i + 1) % int(ans.size())].front();
      long long cur = p * q;
      while (cur <= n) {
        if (d.count(cur)) {
          ans[i].push_back(cur);
          d.erase(cur);
          need -= 1;
          break;
        }
        cur += p * q;
      }
    }
    for (auto xi : d) {
      for (int i = 0; i < int(ans.size()); i++) {
        int p = ans[i][0];
        if (xi % p == 0) {
          ans[i].push_back(xi);
          break;
        }
      }
    }
    for (int i = 0; i < int(ans.size()); i++) {
      cout << ans[i][0] << ' ';
      for (int j = 2; j < int(ans[i].size()); j++) {
        cout << ans[i][j] << ' ';
      }
      if (int(ans[i].size()) > 1) {
        cout << ans[i][1] << ' ';
      }
    }
    cout << '\n';
    cout << need << '\n';
  }
  return (0);
}
