Alice 和 Bob 轮流从网格棋盘上移除卡片。游戏开始时,$N \times M$ 大小的网格棋盘的每个格子中都有一张卡片,每张卡片被涂成红色、蓝色或绿色三种颜色之一。在网格中,左上角格子的位置记为 $(1,1)$,右下角格子的位置记为 $(N, M)$。
Alice 和 Bob 选择棋盘上的一张卡片,然后根据以下规则移除卡片:
- 如果所选卡片的颜色是红色,则移除所有基于该卡片且位于斜率为 1 的对角线上的“相连卡片”。
- 如果所选卡片的颜色是蓝色,则移除所有基于该卡片且位于斜率为 -1 的对角线上的“相连卡片”。
- 如果所选卡片的颜色是绿色,则移除所有基于该卡片且位于两个方向的对角线上的“相连卡片”。
与所选卡片“相连的卡片”是指沿斜率为 1 或 -1 的对角线连续相邻的卡片,包括所选卡片本身。
例如,当游戏过程中的当前棋盘状况如图 A.1 所示时,假设选中的卡片是位于 $(4,3)$ 的红色卡片。如图 A.1 所示,位于斜率为 1 的对角线上的“相连卡片”是指椭圆圈内的卡片,这些卡片应被移除。也就是说,从位置 $(4,3)$ 出发沿对角线两个方向移动时,路径上经过的格子中的卡片即为“相连卡片”。然而,在所选格子 $(4,3)$ 沿对角线两个方向移动时,如果遇到网格边界或空白格子,移动即停止。
图 A.1. 说明位于 $(4,3)$ 的红色卡片的相连卡片的示例
类似地,当游戏过程中的当前棋盘状况如图 A.2 所示时,假设选中的卡片是位于 $(3,5)$ 的蓝色卡片。如图 A.2 所示,位于斜率为 -1 的对角线上的“相连卡片”是指椭圆圈内的卡片,这些卡片应被移除。
图 A.2. 说明位于 $(3,5)$ 的蓝色卡片的相连卡片的示例
图 A.3 显示了当选中的卡片是位于 $(4,5)$ 的绿色卡片时需要移除的卡片。
图 A.3. 说明位于 $(4,5)$ 的绿色卡片的相连卡片的示例
Alice 和 Bob 交替从网格中选择一张卡片,并根据所选卡片的颜色,按照上述规则移除“相连卡片”。谁移除了最后一张卡片,谁就赢得了游戏。也就是说,如果因为网格上没有卡片可选而无法移除任何卡片,则该玩家输掉游戏。Alice 和 Bob 都非常了解如何赢得游戏的策略,并会尽力获胜。
给定网格棋盘的大小以及棋盘上放置的卡片的颜色信息,编写一个程序来确定 Alice 先手时是否能获胜。
输入格式
程序从标准输入读取数据。输入的第一行包含两个整数 $N$ 和 $M$ ($1 \le N, M \le 25$),其中 $N$ 是网格的行数,$M$ 是列数。接下来的 $N$ 行中,第 $i$ 行包含一个长度为 $M$ 的字符串,表示网格第 $i$ 行中 $M$ 张卡片的颜色。字符串中的每个字符均为 ‘R’、‘B’ 或 ‘G’,分别代表红色、蓝色或绿色。
输出格式
程序将结果写入标准输出。仅打印一行。该行应包含一个大写字母:如果 Alice 获胜则输出 ‘W’,如果 Alice 输掉则输出 ‘L’。
样例
输入 1
1 3 BBB
输出 1
W
输入 2
2 3 BBG RGR
输出 2
W
输入 3
2 2 GG GG
输出 3
L