func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<pair<long long int, long long int> > getfac(long long int n) {     vector<pair<long long int, long long int> > ret;     for (long long int i = 1; i < sqrt(n) + 1; i++) {       if (n % i == 0) {         ret.push_back({min({i, n / i}), max({i, n / i})});       }     }     return ret;   }   bool fun1(pair<long long int, long long int> a,             pair<long long int, long long int> b) {     return a.first + a.second < b.first + b.second;   }   bool isin(pair<long long int, long long int> a,             pair<long long int, long long int> b) {     return b.first <= a.first && a.second >= b.second;   }   long long int max(long long int a, long long int b) {     if (a <= b) return a;     return b;   }   long long int min(long long int a, long long int b) {     if (a <= b) return b;     return a;   }   int main() {     long long int a, b, c, d, ans = 1e17;     cin >> a >> b;     c = a;     d = b;     a = min({c, d});     b = max({c, d});     vector<pair<long long int, long long int> > af = getfac(a), bf = getfac(b),                                                 cf = getfac(a + b);     sort(cf.begin(), cf.end(), fun1);     for (int i = 0; i < cf.size(); i += 1) {       long long int p = cf[i].first, q = cf[i].second;       for (int j = 0; j < af.size(); j++) {         if (isin(cf[i], af[j])) {           ans = min({ans, 2 * (p + q)});         }       }       for (int j = 0; j < bf.size(); j++) {         if (isin(cf[i], bf[j])) {           ans = min({ans, 2 * (p + q)});         }       }     }     printf( %lld n , ans);     return 0;   }   