#include <bits/stdc++.h>
const int Mod = (int)1e9 + 7;
const int MX = 1073741735;
const long long MXLL = 9223372036854775807;
const int Sz = 1110111;
using namespace std;
inline void rcin() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
}
vector<int> g[Sz];
int n, d, h;
int dist[Sz];
int main() {
  rcin();
  cin >> n >> d >> h;
  assert(d < n);
  assert(h <= d);
  if (d - h > h) {
    cout << -1;
    return 0;
  }
  if (d == 1) {
    if (n == 2)
      cout << 1 << " " << 2;
    else
      cout << -1;
    return 0;
  }
  int v = 2;
  for (int i = 1; i <= h; i++) {
    dist[v] = dist[i] + 1;
    g[i].push_back(v++);
  }
  if (v <= n && d != h) {
    g[1].push_back(v);
    dist[v] = 1;
    for (int i = 2; i <= d - h; i++) {
      if (v + 1 <= n) {
        dist[v + 1] = dist[v] + 1;
        g[v].push_back(v + 1);
        v++;
      }
    }
    v++;
  }
  for (int i = n; i >= 1; i--)
    if ((int)(g[i].size()) && dist[i] == h - 1) {
      while (v <= n) g[i].push_back(v++);
    }
  for (int i = 1; i <= n; i++)
    for (auto to : g[i]) cout << i << " " << to << endl;
  return 0;
}
