if !ENV['RUBY_THREAD_VM_STACK_SIZE']
  exec({'RUBY_THREAD_VM_STACK_SIZE'=>'1000000000'}, '/usr/bin/ruby', $0)
else
  # util functions

  # debug
  $debugFlag = ( ARGV[0] != nil )
  p "==== DEBUG MODE ====" if $debugFlag

  def pd(str)
    p str if $debugFlag
  end

  def printd(str)
    print str if $debugFlag
  end

  # input
  inputs = []
  lc = 0
  while l = $stdin.gets do
    if false
      inputs << l.chomp.split(" ").map(&:to_s)
    else
      inputs << l.chomp.split(" ").map(&:to_i)
    end
    lc += 1
  end

  nn = inputs[0][0]
  xx = inputs[0][1]

  # input check
  if $debugFlag
    p "--- INPUT (begin) ---"
    inputs.each do |l_i|
      p l_i
    end
    p "--- INPUT (end) ---"
    print "\n"
  end

  # body
  if $debugFlag
    p nn
    p xx
  end

  def rec(n, x)
    if x == 0
      return 0
    end
    if x == 1 and n == 0
      return 1
    end
    
    n_layer = 2**(n+2) - 3
    buf = 0
    xp = x
    if x >= (n_layer - 3)/2 + 2
      buf += 2**n
      xp = x - ((n_layer - 3)/2 + 2)
    else
      xp = x - 1
    end

    return buf + rec(n - 1, xp)
  end

  puts rec(nn, xx)
end
