#ZSH1200. [ZSHOI2022]河外塔问题

[ZSHOI2022]河外塔问题

Background

河内塔(又称汉诺塔)问题,就是在一块木板上有三个立柱,在柱1上放着三个圆盘,小的在上面,大的在下面(初始状态)。让被试将在柱1上的三个圆盘移到柱3上面(目标状态)。条件是:每次只能移动任何一个柱子上面的一个圆盘,但大的圆盘不能放在小的圆盘上。通用问题解决者的解决过程即是手段—目的分析的策略。

Description

但是,你可能没有听过河外塔问题。虽然但是,好像并没有河外塔问题。于是,伟大的X_Xy决定创造一个河外塔问题。

既然是河内塔问题的延申,就得有些一样的东西:有三个柱子A,B和C,以及 nn 个圆盘,其中编号为 ii 的圆盘的半径长为 ii ,这些圆盘最开始都在A上,最终都要顺序(即从上往下从小到大)地移到C上。

既然是河内塔问题的延申,就得有些不同的东西:最开始在A上面的柱子并不是顺序的,由于这个限制,我们也不在意移动过程中的顺序,也就意味着你可以将一个大的圆盘放在小的圆盘上。

但是X_Xy 很懒,他只想让你操作至多次 10610^6

Format

Input

输入共两行。

第一行有一个数 nn ,表示圆盘的数量。

第二行有 nn 个数,表示A上所有的圆盘从上往下的标号。

Output

共若干行

第一行有一个数 tottot ,表示你的操作数。

接下来的 tottot 行,每行两字符,第 i+1i+1 行表示你的第 ii 次操作是从某立柱移到了另一个上,立柱用字符'A','B','C'表示,输出不带''

Samples

3
1 2 3
5
A B
A B
A C
B C
B C

Limitation

本题有SPJ,只有在你完成了需要的操作并且操作次数少于 10610^6 次时,你可以获得满分

对于所有数据点:n4×104n \leqslant 4\times 10^4

数据点 nn
1~2 10\leqslant 10
3~4 200\leqslant 200
5~7 3×104\leqslant 3\times 10^4
8~10 4×104\leqslant 4\times 10^4