#include <bits/stdc++.h>
using namespace std;
long long n, k;
long long get(long long x, long long y) {
  if (x <= y * 2) return 0;
  long long s1 = 1, s2 = 0, p1 = x, p2 = x - 1, ans = 0;
  while (p2 >= y * 2) {
    if (p2 == y * 2) return s1 + ans;
    ans += s1 + s2;
    if (p1 & 1)
      s1 = s1 * 2 + s2;
    else
      s2 = s2 * 2 + s1;
    p1 /= 2;
    p2 = p1 - 1;
  }
  return ans;
}
long long solve(long long l, long long r, long long x, long long k) {
  long long mid = (l + r) / 2;
  if (k == 1) return mid;
  long long X = get(mid - l, x), Y = get(r - mid, x + 1);
  if (k > X + Y + 1) return solve(mid + 1, r, x, k - X - 1);
  return solve(l, mid - 1, x, k - Y - 1);
}
signed main() {
  scanf("%lld%lld", &n, &k);
  if (k == 1) {
    puts("1");
    return 0;
  }
  if (k == 2) {
    printf("%lld\n", n);
    return 0;
  }
  n -= 2;
  k -= 2;
  long long l = 0, r = n;
  while (l < r) {
    long long mid = (l + r + 1) / 2;
    if (get(n, mid) < k)
      r = mid - 1;
    else
      l = mid;
  }
  printf("%lld\n", 1 + solve(1, n, l, k));
}
