#include #include using namespace std; int v[128][128]; int main () { // freopen ("grafc.in", "r", stdin); //freopen ("grafc.out", "w", stdout); int k, n, m; scanf ("%d %d %d", &k, &m, &n); if (n > 1 && m > 1) { printf ("Impossible\n"); return 0; } if (((k == 3) || (k == 2)) && n == 1 && m == 1) { printf ("Impossible\n"); return 0; } int muc = 1; if (m > 1) { muc = 0; swap (n, m); } int tot = k * (k - 1) / 2; for (int i = 2; i <= k - n + 1; ++i) v[i - 1][i] = v[i][i - 1] = 1; if (muc) printf ("%d\n", k - n); else printf ("%d\n", tot - (k - n)); 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; }