#include <iostream>
int M[110][110];
int n,m,k;

using namespace std;

int main()
{
    int i,j;
    cin>>k>>m>>n;
    if(n>1 && m>1) {cout<<"Impossible"<<"\n";return 0;}
    if(k==3 &&n==1 &&m==1) {cout<<"Impossible"<<"\n";return 0;}
    if(n==1)
    {
        int total=(k*(k-1))/2;
        int cate=k;
        int nod1=1; int nod2=2;
        for(i=1;i<=k;i++)
            for(j=1;j<=k;j++)
                M[i][j]=M[j][i]=1;
        while(cate>m)
        {
            M[nod1][nod2]=M[nod2][nod1]=0;
            nod1++;nod2++;
            cate--;
            total--;
        }
        cout<<total<<"\n";
        for(i=1;i<=k;i++)
            for(j=1;j<=k;j++)
                if(M[i][j]==1) {cout<<i<<" "<<j<<"\n"; M[i][j]=M[j][i]=0;}
    }
    else if(m==1)
    {
        int total=0;
        int cate=k;
        int nod1=1; int nod2=2;
        for(i=1;i<=k;i++)
            for(j=1;j<=k;j++)
                M[i][j]=M[j][i]=1;
        while(cate>n)
        {
            M[nod1][nod2]=M[nod2][nod1]=0;
            nod1++;nod2++;
            cate--;
            total++;
        }
        cout<<total<<"\n";
        for(i=1;i<=k;i++)
            for(j=1;j<=k;j++)
                if(M[i][j]==0) {cout<<i<<" "<<j<<"\n"; M[i][j]=M[j][i]=1;}
    }

}