import sys sys.setrecursionlimit(10**7) def I(): return int(sys.stdin.readline().rstrip()) def MI(): return map(int,sys.stdin.readline().rstrip().split()) def LI(): return list(map(int,sys.stdin.readline().rstrip().split())) def LI2(): return list(map(int,sys.stdin.readline().rstrip())) def S(): return sys.stdin.readline().rstrip() def LS(): return list(sys.stdin.readline().rstrip().split()) def LS2(): return list(sys.stdin.readline().rstrip()) D = I() l = D.bit_length() ans = D a = 2 for i in range(l): x = (a*D+2*a-2)//(2*a-1) y = (a*(D+i+1)-1)//(2*a-1) for j in range(x,y+1): if sum(j//(2**k) for k in range(i+2)) == D: ans = min(ans,j) a *= 2 print(ans)