#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int sc = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') sc = sc * 10 + ch - '0', ch = getchar();
  return sc * f;
}
map<long long, long long> f, g, h, a, b, c;
long long n, k;
int main() {
  cin >> n >> k;
  if (k == 1) return puts("1"), 0;
  if (k == 2) return printf("%lld\n", n), 0;
  n -= 2;
  k -= 3;
  g[n] = 1;
  while (!g.empty()) {
    h.clear();
    for (auto x : g)
      if (x.first)
        f[-(x.first - 1 >> 1)] += x.second, h[x.first >> 1] += x.second,
            h[x.first - 1 >> 1] += x.second;
    g = h;
  }
  for (auto x : f) {
    if (k >= x.second)
      k -= x.second;
    else {
      long long l = 1, r = n, d = -x.first;
      while (true) {
        if (!k && (r - l >> 1) == d) return printf("%lld\n", l + 1 + d), 0;
        long long m = l + r >> 1;
        a.clear();
        b.clear();
        c.clear();
        a[r - l >> 1] = b[r - l >> 1] = 1;
        while (!b.empty()) {
          c.clear();
          for (auto x : b)
            if (x.first)
              a[x.first - 1 >> 1] += x.second, c[x.first >> 1] += x.second,
                  c[x.first - 1 >> 1] += x.second;
          b = c;
        }
        if (k >= a[d])
          k -= a[d], l = m + 1;
        else
          r = m - 1;
      }
    }
  }
}
