#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;   }