def solution(n):
count = 1
binary = list('0' + bin(n)[2:])
if binary[-1] == '0':
binary[-1] = '1'
count += 1
k = 0
for i in range(len(binary)-1, -1, -1):
if binary[i] == '0' and k >= count:
break
if binary[i] == '1':
k += 1
zero_idx = i
binary[zero_idx] = '1'
for i in range(zero_idx + 1, len(binary)):
if count == 0:
break
if binary[i] == '1':
binary[i] = '0'
count -= 1
return int(''.join(binary), 2)