func_code_string: #include <bits/stdc++.h>   using namespace std;   using namespace std;   template <typename Arg1>   void __f(const char* name, Arg1&& arg1) {     cerr << name <<   :   << arg1 <<   n ;   }   template <typename Arg1, typename... Args>   void __f(const char* names, Arg1&& arg1, Args&&... args) {     const char* comma = strchr(names + 1,  , );     cerr.write(names, comma - names) <<   :   << arg1 <<   |  ;     __f(comma + 1, args...);   }   long long int gcd(long long int a, long long int b) {     if (a < b)       return gcd(b, a);     else if (b == 0)       return a;     else       return gcd(b, a % b);   }   long long int isPrime(long long int n) {     long long int p = (long long int)sqrt(n);     for (int i = (2); i <= (p); i += (1))       if (n % i == 0) return 0;     return 1;   }   long long int pow(long long int b, long long int e) {     if (e == 0)       return 1;     else if (e % 2 == 0) {       long long int a = pow(b, e / 2);       return a * a;     } else {       long long int a = pow(b, e / 2);       return b * a * a;     }   }   long long int powm(long long int x, long long int y,                      long long int m = 1000000007) {     x = x % m;     long long int res = 1;     while (y) {       if (y & 1) res = res * x;       res %= m;       y = y >> 1;       x = x * x;       x %= m;     }     return res;   }   long long int modInverse(long long int a, long long int m) {     return powm(a, m - 2, m);   }   int spf[10000005];   void sieve() {     spf[1] = 1;     for (int i = 2; i < 10000005; i++) spf[i] = i;     for (int i = 4; i < 10000005; i += 2) spf[i] = 2;     for (int i = 3; i * i < 10000005; i++) {       if (spf[i] == i) {         for (int j = i * i; j < 10000005; j += i)           if (spf[j] == j) spf[j] = i;       }     }   }   void solve() {     sieve();     int n;     cin >> n;     vector<int> arr(n);     vector<pair<long long int, long long int>> ans(n);     for (int i = (0); i <= (n - 1); i += (1)) {       cin >> arr[i];       int x = arr[i];       vector<int> fac;       while (x != 1) {         int temp = spf[x];         fac.push_back(spf[x]);         while (x % temp == 0) x /= temp;       }       bool poss = 0;       ans[i] = {-1, -1};       if ((int)fac.size() > 1) {         int a = fac[0], b = 1;         for (int i = (1); i <= ((int)fac.size() - 1); i += (1)) b *= fac[i];         ans[i] = {a, b};       }     }     for (int i = (0); i <= (n - 1); i += (1)) cout << ans[i].first <<    ;     cout <<   n ;     for (int i = (0); i <= (n - 1); i += (1)) cout << ans[i].second <<    ;     cout <<   n ;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     ;     long long int T = 1;     while (T--) {       solve();     }     return 0;   }   