#include <queue>
#include <cmath>
#include <iostream>
using namespace std;
void func(int a, int b, int n) {
if(n ==1) {
cout << a << ' '<< b<<'\n';
return;
}
func(a, 6-a-b, n-1);
cout << a <<' '<< b<<'\n';
func(6-a-b, b, n-1);
}
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
int n; cin >>n;
if(n <=20) {
cout << (1<<n) -1<<'\n';
func(1,3,n);
}else {
string a = to_string(pow(2,n));
int x = a.find('.');// .의 인덱스 반환
a = a.substr(0,x);
a[a.length()-1] -=1; // 가장 마지막 인덱스에 -1해줌
cout << a;
}
}