At first, let's define function f(x) as follows: $$$ \begin{matrix} f(x) & = & \left\{ \begin{matrix} x/2 & \mbox{if } x  is even \\\ x - 1 & \mbox{otherwise } \end{matrix} \right. \end{matrix} $$$

We can see that if we choose some value v and will apply function f to it, then apply f to f(v), and so on, we'll eventually get 1. Let's write down all values we get in this process in a list and denote this list as path(v). For example, path(1) = [1], path(15) = [15, 14, 7, 6, 3, 2, 1], path(32) = [32, 16, 8, 4, 2, 1].

Let's write all lists path(x) for every x from 1 to n. The question is next: what is the maximum value y such that y is contained in at least k different lists path(x)?

Formally speaking, you need to find maximum y such that \left| \{ x ~|~ 1 ≤ x ≤ n, y ∈ path(x) \} \right| ≥ k.

Input

The first line contains two integers n and k (1 ≤ k ≤ n ≤ 10^{18}).

Output

Print the only integer — the maximum value that is contained in at least k paths.

Examples

Input


11 3


Output


5


Input


11 6


Output


4


Input


20 20


Output


1


Input


14 5


Output


6


Input


1000000 100


Output


31248

Note

In the first example, the answer is 5, since 5 occurs in path(5), path(10) and path(11).

In the second example, the answer is 4, since 4 occurs in path(4), path(5), path(8), path(9), path(10) and path(11).

In the third example n = k, so the answer is 1, since 1 is the only number occuring in all paths for integers from 1 to 20.
n,k = [int(x) for x in input().split()]
def DTB(num,x): 
    if num > 1: 
        DTB(num // 2,x) 
    x.append(num % 2)
nn=[]
kk=[]
DTB(n,nn)
DTB(k,kk)
if k==1:
    print(n)
elif k==2:
    if n==2:
        print(1)
    else:
        if n%2==0:
            print(n-2)
        else:
            print(n-1)
elif k==3:
    if n%4==2:
        print(n//2-1)
    else:
        print(n//2)
else:
    a = len(kk)-2
    m = len(nn)
    p = 2**(a+1)-1 + (n%(2**a))
    if nn[m-a-1]==1:
        p += 2**(a)
    if p>=k:
        print(int(''.join([str(x) for x in nn[0:(m-a-1)]])+'0', 2))
    else:
        N = nn[0:m-a-1]
        if sum(N)>1:
            if k==(2**(a+2)-1):
                if sum(nn[m-a-1:m])==a+1:
                    print(int(''.join([str(x) for x in nn[0:m-a-1]]), 2))
                else:
                    print(int(''.join([str(x) for x in nn[0:m-a-2]])+'0', 2))             
            else:
                N.reverse()
                ind = N.index(1)
                N[ind]=0
                for i in range(ind):
                    N[i]=1
                N.reverse()
                N.append(0)
                print(int(''.join([str(x) for x in N]), 2))
        else:
            if m-a-1==1:
                print(1)
            else:
                if k!= (2**(a+2)-1):
                    print(2**(m-a-1)-2)
                else:
                    print(2**(m-a-2))