""" https://yukicoder.me/problems/no/1286 行ける最大距離を考えると、実は連続しているので二分探索だけで行ける説? うーん、前後100個くらい探索したら行けそうじゃない…? """ def check(): nex = 0 for i in range(1000): x = i ret = 0 while x: ret += x x //= 2 if ret > nex: if ret != nex+1: print ("error:", ret, nex) nex += 1 def get_max(x): ret = 0 while x: ret += x x //= 2 return ret D = int(input()) L = 0 R = D+1 while R-L != 1: M = (L+R)//2 if get_max(M) >= D: R = M else: L = M import sys for i in range(R,R+10**18): ret = 0 x = i while x: ret += x x //= 2 if ret == D: print (i) sys.exit()