#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;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKY29uc3QgaW50IGNteCA9IDFlNSArIDU7CgppbnQgbiwgZCwgaDsKdmVjdG9yPHBhaXI8aW50LGludD4gPiBlZGdlczsKCmludCBtYWluKCl7Cmlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwpjaW4+Pm4+PmQ+Pmg7CmlmKGQ9PTEgYW5kIG4gPiAyKXsKCWNvdXQ8PC0xPDwnXG4nOyByZXR1cm4gMDsKfQppZigoKChkKzEpLzIpID4gaCkgKXsKICBjb3V0PDwtMTw8J1xuJzsgcmV0dXJuIDA7Cn0KaWYoaD09ZCBhbmQgaCA8IChuLTEpKXsKCWNvdXQ8PC0xPDwnXG4nOyByZXR1cm4gMDsKfQoKaW50IHByZSA9IDE7CmludCBub2RlID0gMjsKZm9yKGludCBoMSA9IDE7IGgxIDw9IGggYW5kIChub2RlIDw9IG4pOyBoMSsrKXsKICBlZGdlcy5wdXNoX2JhY2soe3ByZSxub2RlfSk7IHByZSA9IG5vZGU7IG5vZGUrKzsKfQpwcmUgPSAxOwpmb3IoaW50IGgyID0gMTsgaDIgPD0gKGQtaCkgYW5kIChub2RlIDw9IG4pOyBoMisrKXsKICBlZGdlcy5wdXNoX2JhY2soe3ByZSxub2RlfSk7IHByZSA9IG5vZGU7IG5vZGUrKzsKfQp3aGlsZShub2RlIDw9IG4pewogIGVkZ2VzLnB1c2hfYmFjayh7MSxub2RlfSk7IG5vZGUrKzsKfQpmb3IoYXV0byBwIDogZWRnZXMpY291dCA8PCBwLmZpcnN0IDw8ICIgIiA8PCBwLnNlY29uZCA8PCAnXG4nOwpyZXR1cm4gMDsKfQ==