CCCPaste

c130c9750ffa2

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