#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 500;
int n, d, h, idx[maxn];
vector<pair<int, int> > e;
list<int> cap;
int get() { return *(cap.begin()); }
int main(int argc, char *argv[]) {
  cin >> n >> d >> h;
  if (d > 2 * h) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 2; i <= n; ++i) cap.push_back(i);
  for (int i = 1; i <= h; ++i) {
    idx[i] = get();
    cap.pop_front();
  }
  idx[h + 1] = 1;
  for (int i = h + 2; i <= d + 1; ++i) {
    idx[i] = get();
    cap.pop_front();
  }
  for (int i = 1; i <= d; ++i) e.push_back(make_pair(idx[i], idx[i + 1]));
  if (d == 1) {
    if (n > 2) {
      cout << -1 << endl;
      return 0;
    }
  }
  while (cap.size()) {
    if (d == h)
      e.push_back(make_pair(idx[h], get()));
    else
      e.push_back(make_pair(idx[h + 1], get()));
    cap.pop_front();
  }
  for (auto it : e) cout << it.first << " " << it.second << endl;
  return 0;
}
