101 - The Blocks Problem

在早期人工智慧的領域中常常會用到機器人,在這個問題中有一支機器手臂接受指令來搬動積木,而你的任務就是輸出最後積木的情形。

一開始在一平坦的桌面上有n塊積木 (編號從 0 到 n-1) 0 號積木放在 0 號位置上,1 號積木放在 1 號位置上,依此類推,如下圖。

機器手臂有以下幾種合法搬積木的方式 (a 和 b 是積木的編號):

  • move a onto b
    在將 a 搬到 b 上之前,先將 a 和 b 上的積木放回原來的位置 (例如:1 就放回 1 的最開始位罝)
  • move a over b
    在將 a 搬到 b 所在的那堆積木之上之前,先將 a 上的積木放回原來的位罝 (b 所在的那堆積木不動)
  • pile a onto b
    將 a 本身和其上的積木一起放到 b 上,在搬之前 b 上方的積木放回原位
  • pile a over b
    將 a 本身和其上的積木一起搬到 b 所在的那堆積木之上
  • quit
    動作結束

前四個動作中若 a = b,或者 a, b 在同一堆積木中,那麼這樣的動作算是不合法的。所有不合法的動作應該被忽略,也就是對各積木均無改變。

Input

輸入含有多組測試資料,每組測試資料的第一列有一個正整數n(0 < n < 25),代表積木的數目(編號從0到n-1)。接下來為機器手臂的動作,每個動作一列。如果此動作為 quit ,代表此組測試資料輸入結束。你可以假設所有的動作都符合上述的樣式。請參考Sample Input。

Output

每組測試資料輸出桌面上各位置積木的情形(每個位置一列,也就是共有n列),格式請參考Sample Output。

Sample Input

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
4
pile 0 over 1
pile 2 over 3
move 1 onto 3
quit

Sample Output

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