#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > graph(100005);
int main() {
  int n, h, d;
  cin >> n >> d >> h;
  if (d == 1 && n > 2) {
    cout << -1 << endl;
    return 0;
  }
  if (d > 2 * h) {
    cout << -1 << endl;
    return 0;
  }
  int l = d - h;
  int i = 1;
  for (int j = 0; j < l; ++j) {
    cout << i << " " << i + 1 << endl;
    graph[i].push_back(i + 1);
    ++i;
  }
  ++i;
  graph[1].push_back(i);
  cout << 1 << " " << i << endl;
  int cur = 1;
  for (int j = 0; j < h - 1; ++j) {
    graph[i].push_back(i + 1);
    cout << i << " " << i + 1 << endl;
    cur = i;
    ++i;
  }
  int temp = i - 1;
  ++i;
  while (i <= n) {
    cout << cur << " " << i << endl;
    graph[cur].push_back(i);
    ++i;
  }
  return 0;
}
