#include typedef long long ll; #define REP(i,n) for(int i = 0;i < (n);i++) #define rep(i,m,n) for(int i = (m);i < (n);i++) #define P pair #define pb push_back #define mk make_pair using namespace std; #define Vec(a) vector a const int INF = 1 << 20; const int MOD = 1e9+7; uint32_t x = 0, y = 1, z = 2, w = 3; uint32_t generate() { uint32_t t = (x^(x<<11)); x = y; y = z; z = w; w = (w ^ (w >> 19)) ^ (t ^ (t >> 8)); return w; } int main(){ int64_t seed; cin >> seed; x = seed; uint32_t t = (uint32_t) INT_MAX * 2; uint32_t f = 0; uint32_t mid; while(f != t){ mid = (f+t)/2; x = seed; y = 1; z = 2; w = 3; int r = 0, l = 0; for(int i = 0;i < 10000001;i++){ uint32_t t = generate(); if(mid > t){ l++; } if(mid < t){ r++; } if(r >= 5000001){ break; } if(l >= 5000001){ break; } } if(r == l){ cout << mid << endl; return 0; } else{ if(l < r){ f = mid; } else{ t = mid; } } } cout << mid << endl; return 0; }