#include <bits/stdc++.h>
using namespace std;
vector<int> a[100009];
int main() {
  int n, d, h;
  cin >> n >> d >> h;
  int i, flag1 = 0, flag2 = 0;
  if (n == 2 && d == 1 && h == 1) {
    cout << 1 << " " << 2 << endl;
    return 0;
  }
  if (d > 2 * h || d == 1) {
    cout << -1 << endl;
  } else {
    int start = 1;
    int curr;
    int h1 = 0, d1 = 0, top = 1;
    for (i = 2; i <= n; i++) {
      curr = i;
      if (flag1 == 0) {
        a[start].push_back(curr);
        a[curr].push_back(start);
        start = curr;
        h1++;
        d1++;
        if (h1 == h) flag1 = 1;
      } else {
        if (flag2 == 0) {
          if (d1 == d) {
            start = 2;
            flag2 = 1;
            i--;
          } else {
            a[top].push_back(curr);
            a[curr].push_back(top);
            top = curr;
            h1++;
            if (h1 == d) {
              start = 1;
              flag2 = 1;
            }
          }
        } else {
          a[start].push_back(curr);
          a[curr].push_back(start);
        }
      }
    }
    int done[n + 1];
    for (int i = 1; i <= n; i++) done[i] = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 0; j < a[i].size(); j++) {
        if (done[a[i][j]] == 0) {
          cout << i << " " << a[i][j] << endl;
        }
      }
      done[i] = 1;
    }
  }
}
