A little girl loves problems on bitwise operations very much. Here's one of them.

You are given two integers *l* and *r*. Let's consider the values of <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/9b77fab607849cb208cd8aab633b62d894fc3358.png" style="max-width: 100.0%;max-height: 100.0%;"/> for all pairs of integers *a* and *b* (*l* ≤ *a* ≤ *b* ≤ *r*). Your task is to find the maximum value among all considered ones.

Expression <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/b364f2e04c665b78b924ec10666327a4ef4635bc.png" style="max-width: 100.0%;max-height: 100.0%;"/> means applying bitwise excluding or operation to integers *x* and *y*. The given operation exists in all modern programming languages, for example, in languages *C*++ and *Java* it is represented as "^", in *Pascal* — as "xor".
The single line contains space-separated integers *l* and *r* (1 ≤ *l* ≤ *r* ≤ 10<sup class="upper-index">18</sup>).

Please, do not use the %lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specifier.
from collections import deque
import math

mod = 10**9 + 7
fact = [1] * (2*10**5+10)

def get_ret(n, mod):
    return pow(n, mod-2, mod)

for i in range(2, len(fact)):
    fact[i] = (fact[i-1] * i) % mod

def ck(n, k):
    return fact[n] * get_ret(fact[n-k] * fact[k])

def prog(start, finish, d):
    kol = (finish - start) // d + 1
    return (start + finish) * kol // 2

def to_bin(a):
    res = []
    while a > 0:
        res.append(a % 2)
        a //= 2
    res.reverse()
    return res

def I():
    return int(input())

def II():
    return [int(i) for i in input().split()]

def IS():
    return [int(i) for i in input()]

def main():
    l, r = II()
    bl, br = to_bin(l), to_bin(r)
    if len(bl) != len(br):
        print(pow(2, len(br)) - 1)
    else:
        p = 0
        while p < len(br):
            if bl[p] == br[p]:
                p += 1
            else:
                break
        if p != len(bl):
            print(pow(2, len(br) - p - 1))
        else:
            print(0)

if __name__ == "__main__":
    main()

