#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;
}