2430 - 新汉诺塔

通过次数

1

提交次数

7

时间限制 : 3 秒
内存限制 : 128 MB

设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号。将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A,B,C,这个状态称为初始状态。现在要求找到一种步数最少的移动方案,使得从初始状态转变为目标状态。移动时有如下要求:一次只能移一个盘;不允许把大盘移到小盘上面。

输入

第一行一个整数,状态中圆盘总数n。

接下来三行每行若干个整数,分别代表初始状态下A,B,C柱子上的圆盘从下到上的编号,如果只有一个数0就代表这根柱子上没有数。

接下来三行每行若干个整数,分别代表目标状态下A,B,C柱子上的圆盘从下到上的编号,如果只有一个数0就代表这根柱子上没有数。

输出

一行一个整数,代表从初始状态到目标状态的最少步数。

样例

输入

5
3 3 2 1
2 5 4
0
1 2
3 5 4 3
1 1

输出

move 1 from A to B
move 2 from A to C
move 1 from B to C
move 3 from A to B
move 1 from C to B
move 2 from C to A
move 1 from B to C
7

提示

【输出样例说明】

盘子的顺序如下所示:

move 1 from A to B

move 2 from A to C

move 1 from B to C

move 3 from A to B

move 1 from C to B

move 2 from C to A

move 1 from B to C

共7步。

【数据规模与约定】

对于100%的数据,1≤n≤45,1≤每个圆盘的编号≤n。

每行的圆盘描述是从下到上的圆盘编号。