#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <cstring>
#include <map>
using namespace std;
typedef long long ll;

const int maxn = 1e5 + 10;
const ll INF = 1e16;


int main()
{
    ll N;
    cin >> N;
    
    ll element = 1;
    ll step = 1;
    ll remaining = N;
    bool mile = true;
    
    
    while(remaining > 1) {
        if(mile) {
            remaining = (remaining + 1) / 2;
        }
        else {
            if(remaining % 2 == 0) {
                element += step;
                remaining /= 2;
            }
            else {
                remaining = (remaining + 1) / 2;
            }
        }
        step *= 2;
        mile = !mile;
    }
    cout << element << endl;

    return 0;
}
