#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int SIZE = 1e6 + 10;
long long f(long long N, long long K) {
  if (K == 1) return N / 2;
  K--;
  map<long long, long long> q[2];
  q[0][N / 2] = 1;
  q[1][N - N / 2] = 1;
  long long use[2] = {};
  while (1) {
    pair<long long, long long> v[2] = {*q[0].rbegin(), *q[1].rbegin()};
    int id = (v[0].first / 2 < v[1].first / 2);
    if (v[id].second >= K)
      return f(N / 2 + (N % 2) * id, K + use[id]) + id * (N / 2);
    use[id] += v[id].second;
    K -= v[id].second;
    q[id].erase(v[id].first);
    q[id][v[id].first / 2] += v[id].second;
    q[id][v[id].first - v[id].first / 2] += v[id].second;
  }
}
int main() {
  long long N, K;
  cin >> N >> K;
  if (K == 1)
    cout << 1;
  else if (K == 2)
    cout << N;
  else {
    cout << 1 + f(N - 1, K - 2) << endl;
  }
  return 0;
}
