func_code_string: #include <bits/stdc++.h>   using namespace std;   const double eps = 1e-7;   const long long INFF = 1e18;   const int INF = 1e9;   const int mod = 1e9 + 7;   const int MAX = 2e7 + 7;   vector<long long> st1, st2;   int main(void) {     long long a, b;     scanf( %lld %lld , &a, &b);     ;     long long c = a + b;     for (long long i = 1; i <= MAX; ++i) {       if (i * i > a) break;       if (a % i == 0) st1.push_back(i);     }     int tp = ((int)st1.size()) - 1;     for (int i = tp; i >= 0; --i) st1.push_back(a / st1[i]);     for (long long i = 1; i <= MAX; ++i) {       if (i * i > b) break;       if (b % i == 0) st2.push_back(i);     }     tp = ((int)st2.size()) - 1;     for (int i = tp; i >= 0; --i) st2.push_back(b / st2[i]);     long long ans = INFF;     for (long long i = 1; i <= MAX; ++i) {       if (i * i > c) break;       if (c % i == 0) {         bool ok = 0;         long long n = i, m = c / i;         long long n1 = *(--upper_bound((st1).begin(), (st1).end(), n));         if (m >= a / n1) ok = 1;         n1 = *(--upper_bound((st1).begin(), (st1).end(), m));         if (n >= a / n1) ok = 1;         n1 = *(--upper_bound((st2).begin(), (st2).end(), n));         if (m >= b / n1) ok = 1;         n1 = *(--upper_bound((st2).begin(), (st2).end(), m));         if (n >= b / n1) ok = 1;         if (ok) ans = min(ans, 2 * (n + m));       }     }     printf( %lld n , ans);     return 0;   }   