#include <bits/stdc++.h>
using namespace std;
long long int hell = 998244353;
long long int gcd(long long int a, long long int b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
long long int dsu[101];
void uni(long long int x, long long int y) {
  long long int t = dsu[x];
  long long int tt = dsu[y];
  dsu[x] = tt;
}
long long int root(long long int x) {
  long long int ans = 0;
  if (dsu[x] != x) ans = root(dsu[x]);
  dsu[x] = ans;
  return dsu[x];
}
bool vis[102] = {false};
void inti(long long int x) {
  for (long long int i = 0; i < x; ++i) vis[i] = false;
}
void machayenge() {
  long long int n, d, h;
  cin >> n >> d >> h;
  if (h > n - 1) {
    cout << -1;
    return;
  }
  if (d > 2 * h || d < h) {
    cout << -1;
    return;
  }
  if (h == n - 1 && h != d) {
    cout << -1;
    return;
  }
  long long int j = 1;
  if (d == 1 && n > 2) {
    cout << -1;
    return;
  }
  if (h > n - 1 || d > n - 1) {
    cout << -1;
    return;
  }
  for (long long int i = 0; i < h; ++i, j++) cout << j << " " << j + 1 << "\n";
  j++;
  long long int k = 1;
  for (long long int i = 0; i < d - h; ++i) {
    cout << k << " " << j << "\n";
    k = j;
    ++j;
  }
  long long int re = 1;
  if (h == d) {
    re = 2;
  }
  while (j != n + 1) {
    cout << re << " " << j << "\n";
    j++;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  machayenge();
  return 0;
}
