#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > ans;
bool used[200001];
int main() {
  int n, d, h;
  cin >> n >> d >> h;
  if (2 * h < d or d < h or (d == 1 and n != 2)) {
    cout << -1;
    return 0;
  }
  int q = h;
  int now = 1, unused;
  while (q--) {
    ans.push_back(make_pair(now, now + 1));
    used[now] = 1;
    unused = now;
    now++;
    used[now] = 1;
  }
  q = d - h;
  now++;
  int ok = 1;
  while (q--) {
    if (ok == 1) {
      used[now] = 1;
      ans.push_back(make_pair(now, ok));
      ok = 0;
    } else {
      ans.push_back(make_pair(now + 1, now));
      used[now] = 1;
      now++;
      used[now] = 1;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (used[i] == 0) {
      ans.push_back(make_pair(unused, i));
    }
  }
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i].first << " " << ans[i].second << endl;
  }
}
