using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static long NN => long.Parse(ReadLine()); public static void Main() { Solve(); } static void Solve() { var d = NN; var ans = long.MaxValue; for (var i = 0; i < 61; ++i) { var ok = 1L << i; var ng = d * 2 + 1; while (ng - ok > 1) { var mid = (ok + ng) / 2; var tmp = mid; var sum = tmp; for (var j = 0; j < i; ++j) { tmp >>= 1; sum += tmp; } if (sum > d) ng = mid; else ok = mid; } { var tmp = ok; var sum = tmp; for (var j = 0; j < i; ++j) { tmp >>= 1; sum += tmp; } if (d == sum) ans = Math.Min(ans, ok); } } WriteLine(ans); } }