#include <bits/stdc++.h>
using namespace std;
const int MAXN = (int)5e5 + 7;
const int infint = (int)1e9 + 3;
const long long inf = (long long)1e18;
map<pair<long long, long long>, long long> M;
long long n, k;
long long g(long long n, long long x) {
  if (M.count({n, x})) return M[{n, x}];
  if ((n + 1) / 2 - 1 >= x)
    return M[{n, x}] = g((n + 1) / 2, x) + g(n / 2 + 1, x) + 1;
  else
    return 0;
}
long long get(long long n, long long cnt, long long dist) {
  if (n == 3) return 2;
  long long mid = (n + 1) / 2;
  if (cnt == 1) return mid;
  cnt--;
  long long t = cnt - g((n + 1) / 2, dist) - g(n / 2 + 1, dist + 1);
  if (t > 0)
    return get(n / 2 + 1, cnt - g((n + 1) / 2, dist), dist) + mid - 1;
  else
    return get((n + 1) / 2, cnt - g(n / 2 + 1, dist + 1), dist);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  if (k == 1) return cout << 1, 0;
  if (k == 2) return cout << n, 0;
  k -= 2;
  long long L = 0, R = inf;
  while (R - L > 1) {
    long long mid = (L + R) >> 1;
    if (g(n, mid) >= k)
      L = mid;
    else
      R = mid;
  }
  cout << get(n, k, L);
}
