Problem:
Problem F: nCm

Problem

整数nが与えられた時、nCm(異なるn個のものからm個を選ぶ組み合わせの数)が偶数となるような最小のmを出力せよ。

Input

入力は以下の形式で与えられる。

n

Constraints

入力は以下の条件を満たす。

1 ≤ n ≤ 1018

Output

nCmが偶数となるような最小のmを1行に出力する。

Sample Input 1

2

Sample Output 1

1

Sample Input 2

111

Sample Output 2

16

Sample Input 3

3

Sample Output 3

4

Solution in Ruby (judge verdict: Time Limit Exceeded)

n = gets.to_i
if n.even?
    puts 1
elsif n.to_s(2).count(?0) == 0
    puts n + 1
else
    x0 = n - 1
    y0 = 2
    k = 0
    loop do
        x = x0
        until x & 1 == 1
            k += 1
            x >>= 1
        end
        y = y0
        until y & 1 == 1
            k -= 1
            y >>= 1
        end
        break if k > 0
        x0 -= 2
        y0 += 2
    end
    puts y0
end