#include <iostream>
#include <fstream>
using namespace std;

ifstream f("date.in");
#define f cin

int k, n, m;
int G[105][105];

int main()
{
    f >> k >> n >> m;
    swap(n, m);

    if (n != k && m != k) {
        cout << -1 << endl;
        return 0;
    }

    if (m == k && n == k) {
        cout << -1 << endl;
        return 0;
    }

    if (m == k)
    {
        for (int i = 1; i <= k; i++) {
            for (int j = 1; j <= k; j++) {
                G[i][j] = 0;
            }
        }

        for (int i = 1; i <= n; i++) {
            G[1][i + 1] = 1;
        }

        int s = 0;
        for (int i = 1; i <= k; i++) {
            for (int j = 1; j <= k; j++) {
                if (G[i][j] == 1) {
                    s++;
                }
            }
        }
        cout << s << '\n';
        for (int i = 1; i <= k; i++) {
            for (int j = 1; j <= k; j++) {
                if (G[i][j] == 1) {
                    cout << i << ' ' << j << '\n';
                }
            }
        }
    }

    if (n == k)
    {
        for (int i = 1; i <= k; i++) {
            for (int j = 1; j <= k; j++) {
                if (i == j) continue;
                G[i][j] = 1;
            }
        }

        for (int i = 1; i <= m; i++) {
            G[1][i + 1] = 0;
            G[i + 1][1] = 0;
        }

        int s = 0;
        for (int i = 1; i <= k; i++) {
            for (int j = 1; j <= k; j++) {
                if (G[i][j] == 1) {
                    s++;
                }
            }
        }
        cout << s << '\n';
        for (int i = 1; i <= k; i++) {
            for (int j = 1; j <= k; j++) {
                if (G[i][j] == 1) {
                    cout << i << ' ' << j << '\n';
                }
            }
        }
    }

    return 0;
}