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.
import random
import math


def function(x):
    if(x % 2 == 0):
        return int(x/2)
    else: return x - 1


#__________________________________________________#
# brute force solution_____________________________#
def solve_1(n, k):
    frequency = [0] * n
    frequency[0] = n
    for i in range(1, n + 1):
        path(i, frequency)

    max = 1
    for i in range(n):
        if(frequency[i] >= k):
            max = i + 1
    return max

def path(n, frequency):
    while(n > 1):
        frequency[n - 1] += 1
        n = function(n)
    return


#__________________________________________________#
# solution_________________________________________#
def solve_2(n, k):
    max_even = binary_search(n, k, 0, n, 0)
    max_odd = binary_search(n, k, 0, n, 1)
    return max(max_even, max_odd)

def binary_search(n, k, l, r, parity):
    max_contained = 0
    if n == k: return 1
    while r - l > 1:
        m = (r + l)//2
        if m % 2 == (not parity): m += 1
        if not parity:
            count = calculate_count_even(n, m)
        else: count = calculate_count_odd(n, m)
        if count >= k:
            max_contained = max(max_contained, m)
            l = m
        else: r = m - 2

    return max_contained

def calculate_count_odd(n, x):
    if x == 1: return n
    count, a = 0, 1

    while(a * x <= n):
        p = (a * x) + (a - 1)
        if  p <= n:
            count += a
            a *= 2
        else:
            count += n - (a * x) + 1
            break

    return count

def calculate_count_even(n, x):
    if x == 2: return n - 1
    count, a = 1, 2
    if x + 1 <= n: count += 1

    while((a * x) <= n):
        p = (a * x) + ((2 * a) - 1)
        if p <= n:
            count += 2 * a
            a *= 2
        else:
            count += n - (a * x) + 1
            break

    return count


#__________________________________________________#
# main_____________________________________________#
def main():
    n, k = [int(i) for i in input().split()]
    #print(solve_1(n, k))
    print(solve_2(n, k))
    return


#__________________________________________________#
# random cases tester______________________________#
def random_cases():
    case = [0] * 2
    case_generator(case)
    print('Case: \n' + 'n = ' + str(case[0]) + '  ' + 'k = ' + str(case[1]))
    #print(solve_1(case[0], case[1]))    #solucion_fuerza_bruta
    print(solve_2(case[0], case[1]))    #solucion_eficiente
    return

def case_generator(case):
    case[0] = random.randint(1, 1000)
    case[1] = random.randint(1, case[0])
    return


#__________________________________________________#
# tester___________________________________________#
def tester():
    for i in range(1, 20):
        case = [0] * 2
        case_generator(case)
        s1 = solve_1(case[0], case[1])
        s2 = solve_2(case[0], case[1])

        print('Case ' + str(i) + ':\n' + 'n = ' + str(case[0]) + '   k = ' + str(case[1]))
        print('solucion fuerza bruta : ' + str(s1))  #solucion_fuerza_bruta
        print('solucion eficiente : ' + str(s2))     #solucion_eficiente
        if s1 != s2:
            print('Wrong Answer\n')
            return
        print('Accepted\n')
    return


main()
#random_cases()
#tester()