#572. 「例题5-2」木块问题(The Blocks Problem) 暂未评定

时间限制:1000 ms 内存限制:128 MiB 标准输入输出
题目类型:传统 评测方式:无测试数据
上传者: root

题目描述

从左到右有n个木块,编号为0~n-1,要求模拟以下4种操作(下面的a和b都是木块编号)。

move a onto b:把a和b上方的木块全部归位,然后把a摞在b上面。

move a over b:把a上方的木块全部归位,然后把a放在b所在木块堆的顶部。

pile a onto b:把b上方的木块全部归位,然后把a及上面的木块整体摞在b上面。

pile a over b:把a及上面的木块整体摞在b所在木块堆的顶部。

遇到quit时终止一组数据。a和b在同一堆的指令是非法指令,应当忽略。

输入格式

第一行,一个整数 n (0 < n < 25)表示方块的数量。 块的数量后面跟着一系列块命令,每行一个命令。在遇到退出命令之前,程序应该处理所有命令。 您可以假定所有命令都将采用上面指定的格式。不会有语法错误的命令。

输出格式

输出应包括块的最终状态。每个编号为i的原始块位置(其中n是块的数量)应紧跟冒号出现。如果上面至少有一个块,则冒号后面必须跟一个空格,然后是一个显示在该位置的块列表,每个块编号与其他块编号之间用空格分隔。不要在一行上放任何尾随空格。

每个块位置应有一行输出(即,n行输出,其中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: