#include <cstdio>
#include <algorithm>

using namespace std;

int v[128][128];

int main ()
{
    int k, n, m;
    scanf ("%d %d %d", &k, &n, &m);

    if (n < k && m < k)
    {
        printf ("-1\n");
        return 0;
    }

    if ((k == 2 || k == 3) && (n == k && m == k))
    {
        printf ("-1\n");
        return 0;
    }

    int muc = 1;
    if (m != k)
    {
        muc = 0;
        swap (n, m);
    }

    int tot = k * (k - 1) / 2;
    for (int i = 2; i <= n; ++i)
        v[i][i - 1] = v[i - 1][i] = 1;

    if (muc) printf ("%d\n", n - 1);
    else printf ("%d\n", tot - (n - 1));

    for (int i = 1; i <= k; ++i)
        for (int j = i + 1; j <= k; ++j)
            if (v[i][j] == muc) printf ("%d %d\n", i, j);

    return 0;
}