#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int, int>;
const ll inf = 3e18 + 20;
ll n, k;
map<ll, ll> mp1, mp2;
void go(ll n, ll x) {
  if (mp1.count(n)) return;
  mp1[n] = mp2[n] = 0;
  if ((n + 1) / 2 < x) return;
  if ((n + 1) / 2 == x)
    mp1[n]++;
  else
    mp2[n]++;
  ll a = n / 2, b = (n - 1) / 2;
  go(a, x);
  if (a != b) go(b, x);
  mp1[n] += mp1[a] + mp1[b];
  mp2[n] += mp2[a] + mp2[b];
}
void find(ll s, ll e, ll k, ll w) {
  ll n = e - s;
  ll mid = (s + e - 1) >> 1;
  if (k == 1 && (n + 1) / 2 == w) {
    cout << mid + 1 << '\n';
    exit(0);
  }
  ll c = mp1[(n - 1) / 2];
  if ((n + 1) / 2 == w) k--;
  if (c >= k) {
    find(s, mid, k, w);
  } else {
    find(mid + 1, e, k - c, w);
  }
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> k;
  if (k == 1) return cout << 1 << '\n', 0;
  if (k == 2) return cout << n << '\n', 0;
  n -= 2;
  k -= 2;
  ll low = 1, high = n + 5;
  while (high - low > 1) {
    ll mid = (low + high) / 2;
    mp1.clear();
    mp2.clear();
    go(n, mid);
    if (mp1[n] + mp2[n] < k)
      high = mid;
    else
      low = mid;
  }
  {
    mp1.clear();
    mp2.clear();
    go(n, low);
  }
  k -= mp2[n];
  find(1, n + 1, k, low);
}
