// iostream is too mainstream
#include <cstdio>
// bitch please
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <list>
#include <cmath>
#include <iomanip>
#define dibs reserve
#define OVER9000 123456789012345678LL
#define ALL_THE(CAKE,LIE) for(auto LIE =CAKE.begin(); LIE != CAKE.end(); LIE++)
#define tisic 47
#define soclose 1e-8
#define chocolate win
// so much chocolate
#define patkan 9
#define ff first
#define ss second
#define abs(x) ((x < 0)?-(x):x)
#define uint unsigned int
#define dbl long double
using namespace std;
// mylittledoge

int main() {
	cin.sync_with_stdio(0);
	cin.tie(0);
	int S;
	cin >> S;
	if(S == 0) {cout << "1 0\n"; return 0;}
	if(S == 1) {cout << "2 1\n1 2\n"; return 0;}
	if(S == 2 || S == 5) {cout << "Impossible\n"; return 0;}
	if(S == 4) {cout << "3 2\n1 2\n2 3\n"; return 0;}
	if(S == 9) {cout << "4 3\n1 2\n1 3\n1 4\n"; return 0;}
	int N =1;
	while(N*(N+1)/2 <= S) N++;
	cout << N << " " << N*(N-1)-S << "\n";
	vector< vector<bool> > E(N,vector<bool>(N,true));
	for(int i =0; i < (S-N*(N-1)/2); i++) E[i][(i+2)%N] =E[(i+2)%N][i] =false;
	for(int i =0; i < N; i++) for(int j =i+1; j < N; j++)
		if(E[i][j]) cout << i+1 << " " << j+1 << "\n";
	return 0;}

// look at my code
// my code is amazing
