local mfl, mce = math.floor, math.ceil local n, m = io.read("*n", "*n") local function solve(x) local cnt = 1 while 1 < x do x = mce(x / 2) cnt = cnt + 1 end return cnt <= n end local function solve2(x) local cnt = 0 local ret = 0 while 1 < x do ret = ret + x x = mce(x / 2) cnt = cnt + 1 end return ret + (n - cnt) end if solve(m) then print(solve2(m)) os.exit() end local min, max = 1, m while 1 < max - min do local mid = mfl((min + max) / 2) if solve(mid) then max = mid else min = mid end end print(solve2(max))