#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const int cmx = 1e5 + 5;

int n, d, h;
vector<pair<int,int> > edges;

int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>d>>h;
if(d==1 and n > 2){
	cout<<-1<<'\n'; return 0;
}
if((((d+1)/2) > h) ){
  cout<<-1<<'\n'; return 0;
}
if(h==d and h < (n-1)){
	cout<<-1<<'\n'; return 0;
}

int pre = 1;
int node = 2;
for(int h1 = 1; h1 <= h and (node <= n); h1++){
  edges.push_back({pre,node}); pre = node; node++;
}
pre = 1;
for(int h2 = 1; h2 <= (d-h) and (node <= n); h2++){
  edges.push_back({pre,node}); pre = node; node++;
}
while(node <= n){
  edges.push_back({1,node}); node++;
}
for(auto p : edges)cout << p.first << " " << p.second << '\n';
return 0;
}