#include <iostream> #include <set> #include <cstdio> #include <vector> using namespace std; int n,k; bool check(int x) { set<int> st; vector<int> vec; vec.push_back(-x); for(int i = 1;i <= n;i++) if(i != x) st.insert(-i); while(vec.size() != n) { int s = vec.size(); for(int i = 0;i < s;i++) { int v = vec[i]; auto np = st.lower_bound(v - k); int y = *np; if(np != st.end()) { vec.push_back(y);// st.erase(y); } else return false; } } return true; } int main() { scanf("%d%d",&n,&k); int l = 1,r = n + 1; while(l < r) { int mid = (l+r)/2; if(!check(mid)) l = mid + 1; else r = mid; } cout<<l<<endl; }