问题 D: 3.5.1 区块世界

内存限制:128 MB 时间限制:3.000 S
评测方式:文本比较 命题人:
提交:100 解决:50

题目描述

在早期的人工智能规划和机器人研究中使用了一个区块世界, 在这个世界中,机器人手臂执行涉及区块操作的任务。问题是要解析一系列命令,这些命令指导机器人手臂如何操作平板上的块。最初,有n个区块(编号为0~n-1),对于所有0≤i≤n-1的情况,区块b[i]与区块b[i+1]相邻,如下图所示。

用于操纵块的有效命令如下。 move a onto b:把a和b上方的块全部放回初始位置,然后把a放到b上方。 move a over b:把a上方的块全部放回初始位置,然后把a放到b所在块堆的最上方。 pile a onto b:把b上方的块全部放回初始位置,然后把a和a上方所有的块整体放到b 上方。 pile a over b:把a和a上方所有的块整体放到b所在块堆的最上方。 quit:结束标志。 任何a=b或a和b在同一块堆中的命令都是非法命令。所有非法命令都应被忽略。

输入

输入的第1行为整数n (0<n25), 表示区块世界中的块数。后面是一系列块命令,每行一个命令。在遇到quit命令之前,程序应该处理所有命令。所有命令都将采用上面指定的格式,不会有语法错误的命令。

输出

输出应该包含区块世界的最终状态。每个区块i(0≤i<n)后面都有一个冒号。如果上面至少有一个块,则冒号后面必须跟一个空格,后面跟一个显示在该位置的块列表,每个块号与其他块号之间用空格隔开。不要在行末加空格。

样例输入 复制

10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit

样例输出 复制

0: 0
1: 1 9 2 4
2:
3: 3
4:
5: 5 8 7 6
6:
7:
8:
9: