#include <iostream>
#include <fstream>
using namespace std;
#define MAX 110
int a[MAX][MAX];

int main()
{
    int k, n, m, i, j, g=0;
    cin>>k>>m>>n;
    if(m==1 || n==1)
    {
        if(k<=3 && m==1 && n==1)
        {
            cout<<"Impossible\n";
            return 0;
        }


        for(i=max(n, m);i<k;i++)
        {
            a[i][i+1]=1;
        }
        if(n==1)
        {
            for(i=1;i<=k;i++)
            {
                for(j=1;j<=k;j++)
                {
                    a[i][j]^=1;
                }
            }
        }
        for(i=1;i<=k;i++)
        {
            for(j=i+1;j<=k;j++)
            {
                if(a[i][j])
                    g++;
            }
        }
        cout<<g<<"\n";
        for(i=1;i<=k;i++)
        {
            for(j=i+1;j<=k;j++)
            {
                if(a[i][j])
                    cout<<i<<" "<<j<<"\n";
            }
        }
    }
    else
    {
        cout<<"Impossible\n";
    }
}