using static System.Math; using System.Collections.Generic; using System.Linq; using System; public class Hello { static void Main() { string[] line = Console.ReadLine().Trim().Split(' '); var n = int.Parse(line[0]); var m = long.Parse(line[1]); getAns(n, m); } static void getAns(int n, long m) { var m2 = m; var ans = new List(); ans.Add(m2); while (m2 > 1) { m2 = m2 % 2 == 0 ? m2 / 2 : (m2 + 1) / 2; ans.Add(m2); } if (ans.Count > n) { var ans2 = ans.OrderBy(x => x).Take(n).Sum(); var pow2 = (int)Pow(2, n - 1); if (pow2 < m) Console.WriteLine(Max(pow2 * 2 -1,ans2)); else Console.WriteLine(ans2); return; } var res = ans.Sum(); res += n - ans.Count; Console.WriteLine(res); } }