#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
int main(void) {
  int n;
  scanf("%d", &n);
  int d;
  scanf("%d", &d);
  int h;
  scanf("%d", &h);
  if (d > 2 * h || d < h || (n > 2 && (d <= 1)) || (h < 1)) {
    cout << "-1\n";
    return 0;
  } else {
    int it = 1;
    int c = 0;
    while (it <= h) {
      cout << it << " " << it + 1 << endl;
      it++;
      c++;
    }
    if (d != h) {
      if (c < n - 1) {
        cout << 1 << " " << it + 1 << endl;
        c++;
        it += 1;
        d = d - h - 1;
        while (d > 0 && c < n - 1) {
          cout << it << " " << it + 1 << endl;
          it++;
          d--;
          c++;
        }
        while (c < n - 1) {
          cout << 1 << " " << it + 1 << endl;
          it++;
          c++;
        }
      }
    } else {
      if (c < n - 1) {
        cout << 2 << " " << it + 1 << endl;
        c++;
        it += 1;
        d = d - h - 1;
        while (d > 0 && c < n - 1) {
          cout << it << " " << it + 1 << endl;
          it++;
          d--;
          c++;
        }
        while (c < n - 1) {
          cout << 2 << " " << it + 1 << endl;
          it++;
          c++;
        }
      }
    }
  }
  return (0);
}
