func_code_string: #include <bits/stdc++.h>   int32_t gcd(int32_t a, int32_t b) {     if (b == 0) return a;     return gcd(b, a % b);   }   int32_t mpf(int32_t n, std::vector<int32_t>& primes) {     for (int32_t i = 0; i < primes.size(); i++)       if (n % primes[i] == 0) return primes[i];     return 1;   }   int main() {     int32_t num_tests;     std::cin >> num_tests;     for (int32_t t = 0; t < num_tests; t++) {       int32_t n;       std::cin >> n;       int32_t n2 = n;       std::vector<int32_t> primes;       std::map<int32_t, int32_t> powers;       for (int32_t i = 2; i * i <= n2; i++)         if (n2 % i == 0) {           primes.push_back(i);           while (n2 % i == 0) {             powers[i]++;             n2 /= i;           }         }       if (n2 != 1) {         primes.push_back(n2);         powers[n2]++;       }       std::map<int32_t, std::vector<int32_t> > mpf2;       for (int32_t i = 1; i * i <= n; i++) {         if (n % i == 0) {           mpf2[mpf(i, primes)].push_back(i);           if (i * i != n) mpf2[mpf(n / i, primes)].push_back(n / i);         }       }       mpf2.erase(1);       std::vector<int32_t> answer;       std::unordered_set<int32_t> used;       for (int32_t i = 0; i < primes.size(); i++) {         int32_t next =             primes.size() != 1 ? primes[i] * primes[(i + 1) % primes.size()] : -1;         for (int32_t j = 0; j < mpf2[primes[i]].size(); j++)           if (mpf2[primes[i]][j] != next &&               used.find(mpf2[primes[i]][j]) == used.end()) {             used.insert(mpf2[primes[i]][j]);             answer.push_back(mpf2[primes[i]][j]);           }         if (primes.size() != 1 && used.find(next) == used.end()) {           answer.push_back(next);           used.insert(next);         }       }       for (int32_t j = 0; j < answer.size(); j++) std::cout << answer[j] <<    ;       std::cout <<   n ;       int32_t actions = 0;       for (int32_t j = 0; j < answer.size(); j++) {         if (gcd(answer[j], answer[(j + 1) % answer.size()]) == 1) actions++;       }       std::cout << actions <<   n ;     }     return 0;   }   