#PH014. Tháp Hà Nội (Tower of Hanoi)

Tháp Hà Nội (Tower of Hanoi)

Tháp Hà Nội

Nguồn: CSES Problem Set

Phiên bản: Phước Hưng OJ Extended

Đề bài

Trò chơi Tháp Hà Nội gồm ba cọc: cọc trái, cọc giữa và cọc phải, cùng với nn đĩa tròn có kích thước đôi một khác nhau.

Ban đầu, tất cả các đĩa đều nằm trên cọc trái và được xếp theo thứ tự kích thước tăng dần từ trên xuống dưới: đĩa nhỏ nhất ở trên cùng và đĩa lớn nhất ở dưới cùng.

Mục tiêu là chuyển toàn bộ nn đĩa từ cọc trái sang cọc phải, với cọc giữa được sử dụng làm cọc trung gian.

Trong mỗi bước di chuyển:

  • chỉ được lấy đĩa nằm trên cùng của một cọc;
  • đĩa được lấy ra phải được đặt lên trên cùng của một cọc khác;
  • không được đặt một đĩa lớn hơn lên trên một đĩa nhỏ hơn.

Hãy tìm một dãy thao tác hợp lệ sao cho tổng số bước di chuyển là nhỏ nhất.

Ba cọc được đánh số lần lượt như sau:

  • cọc trái là cọc 11;
  • cọc giữa là cọc 22;
  • cọc phải là cọc 33.

Input

Dòng duy nhất chứa số nguyên nn — số lượng đĩa.

Output

Dòng đầu tiên in ra số nguyên kk — số bước di chuyển nhỏ nhất cần thực hiện.

Tiếp theo, in ra kk dòng mô tả các bước di chuyển theo đúng thứ tự thực hiện.

Mỗi dòng chứa hai số nguyên aa và bb, biểu thị việc chuyển đĩa trên cùng từ cọc aa sang cọc bb.

Subtask

  • Subtask 1 — 100%: 1≤n≤161 \le n \le 16.

Ví dụ

Input

2

Output

3
1 2
1 3
2 3

Giải thích

Có 22 đĩa ban đầu đều nằm trên cọc 11.

Trước tiên, chuyển đĩa nhỏ từ cọc 11 sang cọc 22:

1 2

Sau đó, đĩa lớn có thể được chuyển từ cọc 11 sang cọc 33:

1 3

Cuối cùng, chuyển đĩa nhỏ từ cọc 22 sang cọc 33:

2 3

Sau 33 bước, cả hai đĩa đều nằm trên cọc 33 và mọi thao tác đều tuân thủ quy tắc không đặt đĩa lớn hơn lên trên đĩa nhỏ hơn.

Không thể hoàn thành việc chuyển hai đĩa với ít hơn 33 bước, vì vậy kết quả trên đạt số bước di chuyển nhỏ nhất.