#include <bits/stdc++.h>
using namespace std;
const int INF = int(1e9);
const long long INFll = 1ll * INF * INF;
const long double ldINF = 1e+018;
const long double EPS = 0.000000001;
const int base = INF;
const int N = 4001;
vector<int> g[200100];
int main() {
  ios_base::sync_with_stdio(0);
  int n, d, h;
  cin >> n >> d >> h;
  if (d - h > h) {
    cout << -1 << endl;
    return 0;
  }
  if (d == 1 && n != 2) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < h; i++) g[i].push_back(i + 1);
  int cur = h + 1;
  if (h != d) g[0].push_back(cur);
  for (int i = cur; i < cur + d - h - 1; i++) g[i].push_back(i + 1);
  cur += (d - h);
  if (d != h)
    while (cur < n) g[0].push_back(cur++);
  else
    while (cur < n) g[1].push_back(cur++);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < g[i].size(); j++)
      if (i < n && g[i][j] < n) cout << i + 1 << ' ' << g[i][j] + 1 << endl;
  return 0;
}
