#include <bits/stdc++.h>
using namespace std;
bool debug = 0;
int n, m, k;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
string direc = "RDLU";
long long ln, lk, lm;
void etp(bool f = 0) {
  puts(f ? "Yes" : "No");
  exit(0);
}
void addmod(int &x, int y, int mod = 1000000007) {
  assert(y >= 0);
  x += y;
  if (x >= mod) x -= mod;
  assert(x >= 0 && x < mod);
}
void et() {
  puts("-1");
  exit(0);
}
bool isLft(long long tar) {
  pair<long long, long long> mid = {2, ln - 1};
  map<long long, long long> L, R;
  long long cnt = lk;
  L[0] = 0;
  R[0] = 0;
  while (cnt) {
    long long midlen = mid.second - mid.first + 1;
    long long lLen = (*L.rbegin()).first;
    long long rLen = R.rbegin()->first;
    long long MM = max({midlen, lLen, rLen});
    if ((MM + 1) / 2 == (lLen + 1) / 2) {
      if (L.rbegin()->second >= cnt) return 1;
      cnt -= L.rbegin()->second;
      L[L.rbegin()->first / 2] += L.rbegin()->second;
      L[(L.rbegin()->first - 1) / 2] += L.rbegin()->second;
      L.erase(prev(L.end()));
    } else if ((MM + 1) / 2 == (midlen + 1) / 2) {
      long long C = (mid.first + mid.second) / 2;
      if (cnt == 1) return C <= tar;
      cnt--;
      long long x = mid.first, y = mid.second;
      mid = {0, -1};
      if (C - 1 <= tar) {
        L[C - x]++;
      } else {
        mid = {x, C - 1};
      }
      if (tar < C + 1) {
        R[y - C]++;
      } else
        mid = {C + 1, y};
    } else {
      if (R.rbegin()->second >= cnt) return 0;
      cnt -= R.rbegin()->second;
      R[R.rbegin()->first / 2] += R.rbegin()->second;
      R[(R.rbegin()->first - 1) / 2] += R.rbegin()->second;
      R.erase(prev(R.end()));
    }
  }
  return 0;
}
void fmain(int tid) {
  scanf("%lld%lld", &ln, &lk);
  if (lk == 1)
    puts("1");
  else if (lk == 2) {
    printf("%lld\n", ln);
  } else {
    lk -= 2;
    long long l = 2, r = ln - 1, ans = ln - 1;
    while (l <= r) {
      long long mid = (l + r) / 2;
      if (isLft(mid)) {
        ans = mid;
        r = mid - 1;
      } else
        l = mid + 1;
    }
    printf("%lld\n", ans);
  }
}
int main() {
  int t = 1;
  for (int(i) = 1; (i) <= (int)(t); (i)++) {
    fmain(i);
  }
  return 0;
}
