#include <bits/stdc++.h>
using namespace std;
unordered_map<long long, long long> m4, m2;
unordered_map<long long, vector<long long>> m3;
long long sum, p;
long long v[1000000];
long long dfs(long long a) {
  long long i, j;
  j = 0;
  m2[a] = 1;
  for (i = 0; i < m3[a].size(); i++) {
    if (m2[m3[a][i]] == 0) {
      m2[m3[a][i]] = 1;
      m4[m3[a][i]] = v[m3[a][i]] - v[a];
      if (m4[m3[a][i]] < 0) p = -1;
      sum = sum + m4[m3[a][i]];
      dfs(m3[a][i]);
      j++;
    }
  }
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  long long i, j, a, b, n, x, y, d, h, z, t, k, sum1;
  vector<long long int> v1, v2, v3, v4;
  string s, s1, s2;
  unordered_map<long long, long long> m1, m7;
  unordered_map<long long, vector<long long>> m;
  t = 1;
  while (t--) {
    cin >> n >> d >> h;
    if (d == h && d == 1 && n != 2) {
      cout << -1;
      return 0;
    }
    if (d <= 2 * h && n > d && d >= h) {
      for (i = 1; i <= h; i++) {
        cout << i << " " << i + 1 << endl;
      }
      if (d > h) {
        cout << 1 << " " << i + 1 << endl;
        for (i = i + 1; i <= d; i++) {
          cout << i << " " << i + 1 << endl;
        }
        for (i = d + 2; i <= n; i++) {
          cout << 1 << " " << i << endl;
        }
      }
      if (d == h) {
        for (i = h + 2; i <= n; i++) cout << 2 << " " << i << endl;
      }
    } else {
      cout << -1;
    }
  }
}
