#include <iostream>
#include <vector>
using namespace std;
int K,N,M;
vector<pair<int,int> > E;
int main()
{
    cin>>K>>N>>M;
    if((K!=N&&M!=K)||N>K||M>K){cout<<-1;return 0;}
    if(K==N&&M==K){cout<<K-1<<"\n";for(int i=1;i<K;i++)cout<<i<<" "<<i+1<<"\n";return 0;}
    if(N==K&&M!=K)
    {
        for(int i=1;i<=K;i++)
        {
            for(int j=((i-1)/M+1)*M+1;j<=K&&j<((i-1)/M+2)*M+1;j++)
            {
                E.push_back({i,j});
            }
        }
        cout<<E.size()<<"\n";
        for(auto it:E)cout<<it.first<<" "<<it.second<<"\n";
        return 0;
    }
    for(int i=1;i<=K;i+=N)
    {
        for(int j=i;j<i+N&&j<=K;j++)
            for(int k=j+1;k<i+N&&k<=K;k++)
                E.push_back({j,k});
    }
    cout<<E.size()<<"\n";
    for(auto it:E)cout<<it.first<<" "<<it.second<<"\n";
    return 0;
}