func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long int INF = 1000000007;   const int N = 100000 + 7;   int power(int x, unsigned int y) {     int res = 1;     while (y > 0) {       if (y & 1) res = res * x;       y = y >> 1;       x = x * x;     }     return res;   }   int GCD(int A, int B) {     if (B == 0)       return A;     else       return GCD(B, A % B);   }   string decToBin(int number) {     if (number == 0) return  0 ;     if (number == 1) return  1 ;     if (number % 2 == 0)       return decToBin(number / 2) +  0 ;     else       return decToBin(number / 2) +  1 ;   }   int binToDec(string number) {     int result = 0, pow = 1;     for (int i = number.length() - 1; i >= 0; --i, pow <<= 1)       result += (number[i] -  0 ) * pow;     return result;   }   void seive(int n) {     vector<int> primeNums;     bool prime[n + 1];     memset(prime, true, sizeof(prime));     for (int p = 2; p * p <= n; p++) {       if (prime[p]) {         for (int i = 2 * p; i <= n; i += p) prime[i] = false;       }     }     for (int i = 2; i <= n; i++) {       if (prime[i]) {         primeNums.push_back(i);       }     }   }   long long powerMod(long long x, int y, int m) {     x = x % m;     long long res = 1;     while (y > 0) {       if (y & 1) {         res = (res * x) % m;       }       y = y >> 1;       x = (x * x) % m;     }     return res;   }   long long D, X, Y;   void extendedEuclid(int a, int b) {     if (b == 0) {       D = a;       X = 1;       Y = 0;     } else {       extendedEuclid(b, a % b);       int temp = X;       X = Y;       Y = temp - (a / b) * Y;     }   }   long long solve(long long n) {     if (n == 1) return 0;     return n / 2 + 2 * solve((n + 1) / 2);   }   int main() {     long long n;     cin >> n;     cout << solve(n) << endl;     return 0;   }   