#include <bits/stdc++.h>
using namespace std;
long long GCD(long long a, long long b) {
  if (b == 0) {
    return a;
  } else {
    return GCD(b, a % b);
  }
}
bool yoyo(const char p1, const char p2) { return int(p1) > int(p2); }
int main() {
  long long n, t, k, i, j, d, h;
  cin >> n >> d >> h;
  vector<long long> edg[n + 3];
  long long par[n + 2];
  if (n == 1 && d == 0 && h == 0) {
    cout << n << endl;
  } else if (n == 2 && d == 1 && h == 1) {
    cout << 1 << " " << 2 << endl;
  } else if (n >= 3) {
    if (d == 1 || d > 2 * h || (d > n - 1) || d < h || (h > (n - 1))) {
      cout << -1 << endl;
    } else {
      long long hl, hr, ht;
      hr = h;
      hl = d - hr;
      par[1] = 1;
      for (i = 2; i <= hl + 1; i++) {
        par[i] = i - 1;
      }
      ht = 1;
      long long prev = 1;
      for (; ht < hr;) {
        par[i] = prev;
        prev = i;
        i++;
        ht++;
      }
      while (i <= n) {
        par[i] = prev;
        i++;
      }
      for (i = 2; i <= n; i++) {
        cout << par[i] << " " << i << endl;
      }
    }
  } else {
    cout << -1 << endl;
  }
  return 0;
}
