#include <bits/stdc++.h>
using namespace std;
long long n, k, res;
long long tamanno[65];
map<long long, long long> numeroH, posibleS, taken;
long long get(long long t) {
  if (posibleS[t] >= 0) return posibleS[t];
  posibleS[t] = get((t - 1) / 2) + get(t / 2);
  if (taken[t] == 1) posibleS[t]++;
  return posibleS[t];
}
void cal(long long t) {
  if (taken[t] == 1) k--;
  if (k == 0) {
    res += (t - 1) / 2 + 1;
    return;
  }
  if (posibleS[(t - 1) / 2] >= k)
    cal((t - 1) / 2);
  else {
    res += t - (t / 2);
    k -= posibleS[(t - 1) / 2];
    cal(t / 2);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  if (k == 1) {
    cout << 1 << endl;
    return 0;
  }
  if (k == 2) {
    cout << n << endl;
    return 0;
  }
  k -= 2;
  n -= 2;
  for (int i = 1; i <= 60; i++) {
    if (i == 1) {
      tamanno[1] = n;
      numeroH[n] = 1;
    } else {
      tamanno[i] = (tamanno[i - 1] - 1) / 2;
      numeroH[tamanno[i]] += numeroH[tamanno[i - 1]];
      numeroH[tamanno[i - 1] / 2] +=
          numeroH[tamanno[i - 1]] + numeroH[tamanno[i - 1] + 1];
      numeroH[tamanno[i] + 1] += numeroH[tamanno[i - 1] + 1];
    }
    posibleS[tamanno[i]] = -1;
    posibleS[tamanno[i] + 1] = -1;
    if (tamanno[i] == 0) break;
  }
  numeroH[0] = 0;
  numeroH[1] += numeroH[2];
  numeroH[2] = 0;
  for (int i = 1; i <= 60; i++) {
    if (k <= numeroH[tamanno[i]] + numeroH[tamanno[i] + 1]) {
      if (tamanno[i] % 2 == 1) {
        taken[tamanno[i]] = 1;
        taken[tamanno[i] + 1] = 1;
      } else {
        if (k <= numeroH[tamanno[i] + 1])
          taken[tamanno[i] + 1] = 1;
        else
          taken[tamanno[i]] = 1, k -= numeroH[tamanno[i] + 1];
      }
      break;
    } else
      k -= numeroH[tamanno[i]] + numeroH[tamanno[i] + 1];
  }
  if (taken[1] == 1) taken[2] = 1;
  posibleS[0] = 0;
  get(n);
  cal(n);
  cout << res + 1 << endl;
  return 0;
}
