#include<bits/stdc++.h>
#define ll long long
#define pp push_back
#define endl '\n'
#define all(x) x.begin(),x.end()
#define ld long double
#define PI acos(-1)
#define ones(x) __builtin_popcountll(x)
//#define int ll
using namespace std;
void Drakon() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
#ifdef Clion
freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
#endif
}
unsigned long long inf = 1e10;
const double EPS = 1e-6;
const int MOD = 1000000007, N = 200005, LOG = 25;
ll mul(const ll &a, const ll &b) {
return (a % MOD + MOD) * (b % MOD + MOD) % MOD;
}
ll add(const ll &a, const ll &b) {
return (a + b + 2 * MOD) % MOD;
}
ll pw(ll x, ll y) {
ll ret = 1;
while (y > 0) {
if (y % 2 == 0) {
x = mul(x, x);
y = y / 2;
} else {
ret = mul(ret, x);
y = y - 1;
}
}
return ret;
}
set<vector<vector<int>>> s;
int n;
vector<pair<int, int>> bestMoves;
void slv(vector<vector<int>> tower, vector<pair<int, int>> moves) {
if(tower.back().size() == n) {
if(moves.size() < bestMoves.size() || bestMoves.empty()) bestMoves = moves;
return;
}
if(s.count(tower)) return;
s.insert(tower);
for(int i = 0; i < 3; ++i) {
for(int j = 0; j < 3; ++j) {
if(i == j || tower[i].empty()) continue;
int back = tower[i].back();
if(tower[j].empty() || back < tower[j].back()) {
tower[j].push_back(back);
tower[i].pop_back();
moves.push_back({i + 1, j + 1});
slv(tower, moves);
tower[j].pop_back();
tower[i].push_back(back);
moves.pop_back();
}
}
}
}
void solve() {
cin >> n;
vector<vector<int>> tower = vector<vector<int>>(3);
for (int i = n; i >= 1; --i) {
tower[0].push_back(i);
}
slv(tower, {});
cout << bestMoves.size() << endl;
for(auto &[x, y] : bestMoves) cout << x << ' ' << y << endl;
}
signed main() {
Drakon();
int t = 1;
//cin >> t;
while (t--) {
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcHAgcHVzaF9iYWNrCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBQSSBhY29zKC0xKQojZGVmaW5lIG9uZXMoeCkgX19idWlsdGluX3BvcGNvdW50bGwoeCkKLy8jZGVmaW5lIGludCBsbAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgRHJha29uKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CiNpZmRlZiBDbGlvbgogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbiksIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgp9Cgp1bnNpZ25lZCBsb25nIGxvbmcgaW5mID0gMWUxMDsKY29uc3QgZG91YmxlIEVQUyA9IDFlLTY7CmNvbnN0IGludCBNT0QgPSAxMDAwMDAwMDA3LCBOID0gMjAwMDA1LCBMT0cgPSAyNTsKCmxsIG11bChjb25zdCBsbCAmYSwgY29uc3QgbGwgJmIpIHsKICAgIHJldHVybiAoYSAlIE1PRCArIE1PRCkgKiAoYiAlIE1PRCArIE1PRCkgJSBNT0Q7Cn0KCmxsIGFkZChjb25zdCBsbCAmYSwgY29uc3QgbGwgJmIpIHsKICAgIHJldHVybiAoYSArIGIgKyAyICogTU9EKSAlIE1PRDsKfQoKbGwgcHcobGwgeCwgbGwgeSkgewogICAgbGwgcmV0ID0gMTsKICAgIHdoaWxlICh5ID4gMCkgewogICAgICAgIGlmICh5ICUgMiA9PSAwKSB7CiAgICAgICAgICAgIHggPSBtdWwoeCwgeCk7CiAgICAgICAgICAgIHkgPSB5IC8gMjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXQgPSBtdWwocmV0LCB4KTsKICAgICAgICAgICAgeSA9IHkgLSAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXQ7Cn0KCnNldDx2ZWN0b3I8dmVjdG9yPGludD4+PiBzOwppbnQgbjsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBiZXN0TW92ZXM7Cgp2b2lkIHNsdih2ZWN0b3I8dmVjdG9yPGludD4+IHRvd2VyLCB2ZWN0b3I8cGFpcjxpbnQsIGludD4+IG1vdmVzKSB7CiAgICBpZih0b3dlci5iYWNrKCkuc2l6ZSgpID09IG4pIHsKICAgICAgICBpZihtb3Zlcy5zaXplKCkgPCBiZXN0TW92ZXMuc2l6ZSgpIHx8IGJlc3RNb3Zlcy5lbXB0eSgpKSBiZXN0TW92ZXMgPSBtb3ZlczsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZihzLmNvdW50KHRvd2VyKSkgcmV0dXJuOwogICAgcy5pbnNlcnQodG93ZXIpOwogICAgZm9yKGludCBpID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCAzOyArK2opIHsKICAgICAgICAgICAgaWYoaSA9PSBqIHx8IHRvd2VyW2ldLmVtcHR5KCkpIGNvbnRpbnVlOwogICAgICAgICAgICBpbnQgYmFjayA9IHRvd2VyW2ldLmJhY2soKTsKICAgICAgICAgICAgaWYodG93ZXJbal0uZW1wdHkoKSB8fCBiYWNrIDwgdG93ZXJbal0uYmFjaygpKSB7CiAgICAgICAgICAgICAgICB0b3dlcltqXS5wdXNoX2JhY2soYmFjayk7CiAgICAgICAgICAgICAgICB0b3dlcltpXS5wb3BfYmFjaygpOwogICAgICAgICAgICAgICAgbW92ZXMucHVzaF9iYWNrKHtpICsgMSwgaiArIDF9KTsKCiAgICAgICAgICAgICAgICBzbHYodG93ZXIsIG1vdmVzKTsKCiAgICAgICAgICAgICAgICB0b3dlcltqXS5wb3BfYmFjaygpOwogICAgICAgICAgICAgICAgdG93ZXJbaV0ucHVzaF9iYWNrKGJhY2spOwogICAgICAgICAgICAgICAgbW92ZXMucG9wX2JhY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiB0b3dlciA9IHZlY3Rvcjx2ZWN0b3I8aW50Pj4oMyk7CiAgICBmb3IgKGludCBpID0gbjsgaSA+PSAxOyAtLWkpIHsKICAgICAgICB0b3dlclswXS5wdXNoX2JhY2soaSk7CiAgICB9CiAgICBzbHYodG93ZXIsIHt9KTsKICAgIGNvdXQgPDwgYmVzdE1vdmVzLnNpemUoKSA8PCBlbmRsOwogICAgZm9yKGF1dG8gJlt4LCB5XSA6IGJlc3RNb3ZlcykgY291dCA8PCB4IDw8ICcgJyA8PCB5IDw8IGVuZGw7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgRHJha29uKCk7CiAgICBpbnQgdCA9IDE7CiAgICAvL2NpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0=