#include <bits/stdc++.h>
using namespace std;
void show(vector<int> a) {
  for (auto x : a) cout << x << " ";
}
const int N = 1e5 + 1, inf = 1e6 + 18;
void solve(int tt) {
  int n, m, d, h, k, s, i, j;
  cin >> n >> d >> h;
  if (d == 1 && n > 2) {
    cout << -1;
    return;
  }
  if (d <= 2 * h && d >= h) {
    vector<pair<int, int> > edges;
    ++h;
    int up = h - 1;
    for (int i = 2; i <= h; i++) edges.push_back({i - 1, i});
    d -= (h - 1);
    if (d) {
      ++h;
      edges.push_back({1, h});
      --d;
    }
    while (d--) {
      ++h;
      edges.push_back({h - 1, h});
    }
    while (edges.size() < (n - 1)) {
      ++h;
      edges.push_back({up, h});
    }
    for (auto x : edges) cout << x.first << " " << x.second << "\n";
    return;
  }
  cout << -1 << "\n";
  ;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int T = 1, i;
  while (T--) solve(T);
  return 0;
}
