func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename First>   void debug_print_in(First first) {     cerr << first << endl;     return;   }   template <typename First, typename... Rest>   void debug_print_in(First first, Rest... rest) {     cerr << first <<    ;     debug_print_in(rest...);     return;   }   void IN(void) { return; }   template <typename First, typename... Rest>   void IN(First& first, Rest&... rest) {     cin >> first;     IN(rest...);     return;   }   template <typename First>   void OUT(First first) {     cout << first << endl;     return;   }   template <typename First, typename... Rest>   void OUT(First first, Rest... rest) {     cout << first <<    ;     OUT(rest...);     return;   }   template <class t, class u>   t chmax(t& a, u b) {     if (a < b) a = b;     return a;   };   template <class t, class u>   t chmin(t& a, u b) {     if (a > b) a = b;     return a;   };   int popcount(int t) { return __builtin_popcount(t); }   int popcount(long long t) { return __builtin_popcountll(t); }   template <typename T>   void vec_print(vector<T> VEC) {     for (long long i = (long long)0; i < (long long)VEC.size(); ++i) {       cerr << VEC[i] <<    ;     }     cerr << endl;   };   template <typename T>   void mat_print(vector<vector<T>> MAT) {     for (long long i = (long long)0; i < (long long)MAT.size(); ++i) {       for (long long j = (long long)0; j < (long long)MAT[i].size(); ++j) {         cerr << MAT[i][j] <<    ;       }       cerr << endl;     }   };   constexpr int INF = (1 << 30);   constexpr long long INFLL = 1LL << 62;   constexpr long double EPS = 1e-12;   constexpr long long MOD = (long long)((1E+9) + 7);   int main() {     cin.tie(0);     ios::sync_with_stdio(false);     long long n;     IN(n);     vector<long long> a(n);     for (long long i = (long long)0; i < (long long)n; ++i) IN(a[i]);     vector<long long> d1(n, -1);     vector<long long> d2(n, -1);     vector<long long> primes(1, 2);     for (long long i = 3; i * i <= 2E7; i += 2) {       bool flag = true;       for (long long j = 0; primes[j] * primes[j] <= i; ++j) {         if (i % primes[j] == 0) {           flag = false;           break;         }       }       if (flag) {         primes.push_back(i);       }     }     for (long long i = (long long)0; i < (long long)n; ++i) {       for (long long j = 0; primes[j] * primes[j] < a[i]; ++j) {         long long d1_ = primes[j];         if (a[i] % d1_ != 0) continue;         while (a[i] % d1_ == 0) {           a[i] /= d1_;         }         if (a[i] > 1) {           d1[i] = d1_;           d2[i] = a[i];         }         break;       }     }     for (long long i = (long long)0; i < (long long)n; ++i) {       printf( %lld  , d1[i]);     }     printf(  n );     for (long long i = (long long)0; i < (long long)n; ++i) {       printf( %lld  , d2[i]);     }     printf(  n );     return 0;   }   