#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= mod;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
int n, k;
vector<pair<int, int> > e;
multiset<pair<int, int> > st;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i < k; i++) st.insert(make_pair(0, 1));
  for (int i = 2; i < n + 1; i++) {
    auto it = st.begin();
    e.push_back(make_pair(i, it->second));
    st.insert(make_pair(it->first + 1, i));
    st.erase(it);
  }
  auto it = (--st.end()), pit = it;
  --pit;
  printf("%d\n", (it->first) + (pit->first));
  for (int i = 0; i < n - 1; i++) {
    printf("%d %d\n", e[i].first, e[i].second);
  }
}
