#include <bits/stdc++.h>
using namespace std;
const int INF = 2000000009;
const int Max = 1000007;
const double PI = acos(-1.0);
int main() {
  int i, j, k, l, temp, t, n, d, h, m, caseno = 0, ans;
  string str;
  vector<pair<int, int> > anss;
  while (cin >> n >> d >> h) {
    anss.clear();
    int nc = 2;
    for (i = 0; i < h; i++) {
      anss.push_back(make_pair(nc - 1, nc));
      nc++;
    }
    if (d - h > h || (d == 1 && n > 2)) {
      cout << -1 << endl;
      continue;
    }
    d -= h;
    m = 1;
    for (i = 0; i < d; i++) {
      anss.push_back(make_pair(m, nc));
      m = nc;
      nc++;
    }
    if (d > 0) {
      while (nc <= n) {
        anss.push_back(make_pair(1, nc));
        nc++;
      }
    } else {
      m = 2;
      while (nc <= n) {
        anss.push_back(make_pair(2, nc));
        nc++;
      }
    }
    l = anss.size();
    if (l != n - 1) {
      cout << -1 << endl;
      continue;
    }
    for (i = 0; i < l; i++)
      cout << anss[i].first << " " << anss[i].second << endl;
  }
  return 0;
}
