#include <bits/stdc++.h>
using namespace std;
bool IsGraph(int n, int k) {
  if (n <= 3) return false;
  if (k > 3) return false;
  if (k >= n) return false;
  if (k == 3) {
    printf("%d\n1 2\n2 3\n", 2 + (n - 2) * (n - 3) / 2);
    for (int i = 3; i <= n; i++)
      for (int j = i + 1; j <= n; j++) printf("%d %d\n", i, j);
    return true;
  }
  if (k == 2) {
    if (n == 4) return false;
    if (n == 3) return false;
    printf("%d\n", n - 1);
    for (int i = 0; i < n - 1; i++) printf("%d %d\n", i + 1, i + 2);
    return true;
  }
  if (k == 1) return false;
  return true;
}
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  if (!IsGraph(n, k)) printf("-1\n");
}
