#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace atcoder; using Graph = vector>; using ll = long long; typedef pair P_ll; typedef pair P; const ll INF_ll = 1e17; const int INF = 1e8; template bool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; } template bool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; } template using min_priority_queue = priority_queue, greater>; int main() { ll D; cin >> D; ll ans = D; for (ll i = max(D / 2 - 100000, 0ll); i <= D / 2 + 100000; i++) { ll x = i; ll now = 0; while (x > 0) { now += x; if (now == D) { chmin(ans, i); break; } x /= 2; } } cout << ans << endl; return 0; }