#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> tree;
vector<int> leaves;
void build_dfs(int root, int p) {
  leaves[root] = 0;
  for (int x : tree[root]) {
    if (x != p) {
      build_dfs(x, root);
      leaves[root] = leaves[root] + leaves[x];
    }
  }
  if (leaves[root] == 0) {
    leaves[root] = 1;
  }
}
int main() {
  int n, d, h, t, i, j, diff;
  cin >> n >> d >> h;
  if (d > 2 * h) {
    cout << -1;
  } else if (h == 1 && d == 1 && n > 2) {
    cout << -1;
  } else if (n == 2) {
    cout << 1 << " " << 2;
  } else {
    t = 1;
    diff = d - h;
    for (i = 1; i <= h; i++) {
      cout << t << " " << t + 1 << "\n";
      t++;
    }
    if (diff > 0) {
      cout << 1 << " " << t + 1 << "\n";
      t++;
      diff--;
      for (i = 1; i <= diff; i++) {
        cout << t << " " << t + 1 << "\n";
        t++;
      }
      while (t < n) {
        t++;
        cout << 1 << " " << t << "\n";
      }
    } else {
      while (t < n) {
        t++;
        cout << 2 << " " << t << "\n";
      }
    }
  }
  return 0;
}
