您的大学棋盘游戏俱乐部刚刚举办了一场跳棋锦标赛,您被指派负责记录比赛过程。不幸的是,在回家的路上,您把所有的纸都掉进了水坑里!真是灾难!您写的大部分内容现在都无法辨认;您剩下的只有几份在各种比赛中途进行的走法列表。有什么办法可以重现这些比赛中发生的事情吗?您最好快点解决这个问题,否则他们会把您降职为井字棋记录员!
跳棋(或称英国跳棋)是一种规则简单的知名棋盘游戏。它在 $8 \times 8$ 跳棋盘的深色格子上进行。游戏有两名玩家,黑方和白方,他们轮流移动自己的棋子(黑方的所有棋子都是黑色的,白方的所有棋子都是白色的)。每个棋子占据一个深色格子,可以是普通的“兵”(man)或升级后的“王”(king)。一个回合包括选择一个棋子并以以下两种方式之一进行移动:
将棋子对角移动到相邻的空闲深色格子上,如图 C.1(a) 所示。这被称为简单移动(simple move)。如果棋子是兵,它只能向棋盘对方一侧的两个对角方向移动(黑方朝向底部,白方朝向顶部)。如果棋子是王,它可以在所有四个对角方向上移动。
跳过相邻的敌方棋子,落在紧邻其后的空闲格子上,然后移除(捕获)该敌方棋子。兵只能向上述两个方向跳跃,而王可以在所有四个方向上跳跃。玩家随后可以重复此步骤,只要有位置合适的敌方棋子可供捕获,就可以继续用同一枚棋子进行跳跃。这种包含一次或多次跳跃的序列称为跳跃移动(jump move)。图 C.1(b) 展示了一个包含三次跳跃的跳跃移动。
图 C.1: (a), (b) 样例输入 1 中的前两步走法。较大的棋子是王,较小的棋子是兵。黑方位于顶部,白方位于底部。(c) 输入中使用的编号。
在跳棋中,捕获是强制性的。如果玩家回合开始时有跳跃移动可用,他们必须进行跳跃,并且在用该棋子进行跳跃时,只要还有可能的跳跃,就不能停止。如果存在多种可能性,他们可以自由选择用哪枚棋子跳跃以及跳向何处。在图 C.1(b) 中,黑方无法进行任何其他移动。
如果一枚兵到达了离其玩家最远的一行(即黑兵到达底行或白兵到达顶行),它将从棋盘上移除并替换为同色的王(这被称为升级),回合结束。棋子不能在同一回合内先升级,然后作为新王向后跳跃。
给定一个走法列表,找到一种棋子布局,使得这些走法可以从该布局开始按顺序合法地进行。此布局中可能没有位于底行的黑兵或位于顶行的白兵,因为它们本应已经被升级为王。您只需要确保遵守上述规则;您不需要确保此布局在真实的跳棋游戏中是可达的。
输入格式
输入的第一行包含一个字符 $c$ 和一个整数 $n$,其中 $c \in \{B, W\}$ 表示哪位玩家先走(分别为黑方或白方),$n$ ($1 \le n \le 100$) 是列表中的走法数量。接下来是 $n$ 行,每行描述了下文中定义的标准跳棋记谱法中的一个走法。
深色格子由数字 1–32 标识,如图 C.1(c) 所示。从格子 $a$ 到格子 $b$ 的简单移动记为 $a-b$。从 $a$ 开始并跳跃至 $b_1, b_2, \dots, b_k$ 的跳跃移动记为 $axb_1xb_2x\dots xbk$。
给定的走法集合总存在一个有效的解。
输出格式
并排输出两个棋盘(中间用空格隔开),给出给定走法之前(左侧)和之后(右侧)棋盘上所有棋子的位置。使用 ‘-’ 表示浅色格子,‘.’ 表示空的深色格子,小写字母 ‘b’ 和 ‘w’ 表示黑兵和白兵,大写字母 ‘B’ 和 ‘W’ 表示黑王和白王。如果存在多个有效解,任何一个均可。
样例
样例输入 1
W 3 21-17 13x22x31x24 19x28
样例输出 1
-b-.-.-. -b-.-.-. .-.-.-.- .-.-.-.- -.-.-.-. -.-.-.-. B-.-w-.- .-.-w-.- -.-.-W-. -.-.-.-. w-.-.-.- .-.-.-.- -.-w-w-. -.-.-.-W .-.-.-.- .-.-.-.-
样例输入 2
B 5 2-7 9x2 32-27 2x11x18 5-9
样例输出 2
-.-b-.-W -.-.-.-W b-b-.-.- .-.-.-.- -w-.-.-. -b-.-.-. B-w-b-.- B-w-.-.- -.-.-.-. -.-W-.-. .-.-.-.- .-.-.-.- -.-.-.-. -.-.-B-. .-.-.-B- .-.-.-.-