#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int K, N, M;
bool is[102][102];
vector<pair<int, int> > V;

int main()
{
	cin.sync_with_stdio(false);
	
	cin >> K >> M >> N;
	
	if (N == 1)
	{
		for (int i = 1; i <= K; ++i)
			for (int j = i + 1; j <= K; ++j)
				is[i][j] = true;
		for (int i = 1; i <= K - M; ++i)
			is[i][i + 1] = false;
		for (int i = 1; i <= K; ++i)
			for (int j = i + 1; j <= K; ++j)
				if (is[i][j])
					V.push_back(make_pair(i, j));
		
		cout << V.size() << '\n';
		for (int i = 0; i < int(V.size()); ++i)
			cout << V[i].first << ' ' << V[i].second << '\n';
	}
	else if (M == 1)
	{
		for (int i = 1; i <= K - N; ++i)
			is[i][i + 1] = true;
		for (int i = 1; i <= K; ++i)
			for (int j = i + 1; j <= K; ++j)
				if (is[i][j])
					V.push_back(make_pair(i, j));
					
		cout << V.size() << '\n';
		for (int i = 0; i < int(V.size()); ++i)
			cout << V[i].first << ' ' << V[i].second << '\n';
	}
	else
		cout << "Impossible" << '\n';
}