#include <bits/stdc++.h>
using namespace std;
vector<int> mp[150000];
int main() {
  int n, d, h;
  while (~scanf("%d%d%d", &n, &d, &h)) {
    if (d == 1 && h == 1) {
      if (n == 2) {
        printf("1 2\n");
      } else
        printf("-1\n");
      continue;
    }
    for (int i = 1; i <= n; i++) mp[i].clear();
    for (int i = 1; i <= d; i++) {
      mp[i].push_back(i + 1);
    }
    int root = 1 + d - h;
    if (d - root > h || root - 1 > h) {
      printf("-1\n");
      continue;
    }
    if (d == h) root = 2;
    for (int i = d + 2; i <= n; i++) {
      if (i <= root)
        mp[i].push_back(root);
      else
        mp[root].push_back(i);
    }
    if (d == h) root = 1;
    for (int i = 1; i <= n; i++) {
      for (int j = 0; j < mp[i].size(); j++) {
        int u = i;
        int v = mp[i][j];
        if (u == 1)
          u = root;
        else if (u == root)
          u = 1;
        if (v == 1)
          v = root;
        else if (v == root)
          v = 1;
        printf("%d %d\n", u, v);
      }
    }
  }
}
