
Big Integer 곱셈 구현
#include <queue>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
int n;
int k;
queue<pair<int, int>> q;
void hanoiMove() {
	//2^n
	vector<short> v1;
	vector<short> v2;
	vector<short>& before = v1;
	vector<short>& after = v2;
	before.push_back(1);
	for (int i = 0; i < n; ++i) {
		int carry = 0;
		for (int j = 0; j < before.size(); ++j) {
				short mul =before[j] * 2;
				mul += carry;
				after.push_back(mul % 10);
				carry = mul / 10;
		}
		if (carry > 0) after.push_back(carry);
		swap(before, after);
		after.clear();
	}
	//-1
	if (v1[0] > 0) v1[0] = v1[0] - 1;
	else {
		v1[0] = 9;
		int idx = 1;
		while (v1[idx] == 0) {
			v1[idx] = 9;
			idx++;
		}
		v1[idx] = v1[idx] - 1;
	}
	//출력
	for (int i = v1.size() - 1; i >= 0; --i) {
		cout << v1[i];
	}
	cout << "\n";
}
void hanoi(int num, int start, int mid, int end) {
	if (num == 1) {
		q.push({ start, end });
		return;
	}
	hanoi(num - 1, start, end, mid);
	hanoi(1, start, mid, end);
	hanoi(num - 1, mid, start, end);
	return;
}
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	cin >> n;
	hanoiMove();
	
	if (n <= 20) {
		hanoi(n, 1, 2, 3);
		while (!q.empty()) {
			cout << q.front().first << " " << q.front().second << "\n";
			q.pop();
		}
	}
	return 0;
}