#include using namespace std; using ll=long long; int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); ll n; cin>>n; auto f=[](ll n,ll x)->ll{ n--; vector dp(4); dp[0]=1; for(int i=29;i>=0;i--){ vector ndp(4); for(int a=0;a<2;a++)for(int b=0;b<2;b++){ if(i%2==0&&(a&b)!=(x>>i&1))continue; if(i%2==1&&(a|b)!=(x>>i&1))continue; for(int c=0;c<2;c++)for(int d=0;d<2;d++){ if(c==0&&(n>>i&1)==0&&a==1)continue; if(d==0&&(n>>i&1)==0&&b==1)continue; int nc=c,nd=d; if((n>>i&1)==1&&a==0)nc=1; if((n>>i&1)==1&&b==0)nd=1; ndp[nc*2+nd]+=dp[2*c+d]; } } dp=ndp; } return dp[0]+dp[1]+dp[2]+dp[3]; }; ll ans=0; ll p=0; ll cur=1; for(int i=0;i<=30;i+=2){ ll nxt=p+(1<<(i+1)); if(f(n,p)>=f(n,nxt)){ ans+=(n-cur+1)*p; break; } ll l=cur,r=n; while(l+1=f(c,nxt))l=c; else r=c; } ans+=(r-cur)*p; p=nxt; cur=r; } cout<