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.
# Online Python compiler (interpreter) to run Python online.
# Write Python 3 code in this online editor and run it.
import sys
import threading
from collections import defaultdict
from collections import Counter
from string import ascii_lowercase 
from functools import lru_cache
from collections import deque
import heapq
import math

############ ---- Input Functions ---- ############
############ ---- Input Functions ---- ############
def inp():
    return(int(input()))
def inlt():
    return(list(map(int,input().split())))
def insr():
    s = input()
    return(list(s[:len(s) - 1]))
def invr():
    return(map(str,input().split()))
def main():
    l, r = inlt()
    if l == r:
        print(0)
        exit()
    num = bin(r)[2:]
    numl = bin(l)[2:]
    leng = len(num)
    leng2 = len(numl)
    
    numl = "0" * (leng - leng2) + numl

    
    s = ["0"] * leng
    num2 = 0
    for i in range(leng -1 , -1, -1):
        if num[i] == "0":
            s[i] = "1"
            num2 += pow(2, leng -1 - i)
 
    for i in range(leng -1 , -1, -1):
        if num2 >= l:
            break
        if s[i] == "0" and numl[i] == "1":
            s[i] = "1"
            num2 += pow(2, leng -1 - i)
    

    print(num2 ^ r)
   
main()