在 Join-K 这个激动人心的游戏中,红棋和蓝棋被投入到一个 $N \times N$ 的棋盘中。棋盘垂直放置,棋子会落入所在列最底部的空位。例如,考虑以下两种布局:
- 合法位置 - ....... ....... ....... ....R.. ...RB.. ..BRB.. .RBBR.. |
- 非法位置 - ....... ....... ....... ....... Bad -> ..BR... ...R... .RBBR.. |
在这些图中,每个 '.' 代表一个空位,每个 'R' 代表一个红棋,每个 'B' 代表一个蓝棋。左侧的布局是合法的,而右侧的则不是。这是因为第三列中的一个棋子(箭头所指)没有落到它下方的空位上。
如果玩家能将至少 K 个己方颜色的棋子连成一线(水平、垂直或对角线),该玩家获胜。四种可能的连线方向如下所示:
- 四子连珠 - R RRRR R R R R R R R R R R R |
在题目开头的“合法位置”图中,两位玩家都连成了两个棋子,但没有连成三个。
事实证明,你现在正在进行一场非常刺激的 Join-K 游戏,并且你有一个确保胜利的巧妙计划!当对手不注意时,你打算将棋盘顺时针旋转 90 度。重力会使棋子落入新的位置,如下图所示:
- 开始 - ....... ....... ....... ...R... ...RB.. ..BRB.. .RBBR.. |
- 旋转 - ....... R...... BB..... BRRR... RBB.... ....... ....... |
- 重力 - ....... ....... ....... R...... BB..... BRR.... RBBR... |
不幸的是,在对手察觉之前,你只有时间旋转一次。
剩下的就是选择合适的时机采取行动。给定一个棋盘布局,你需要确定在将棋盘顺时针旋转并让重力在新的方向上生效后,哪位玩家(或双方!)会有 K 个棋子连成一线。
说明
- 你只能旋转棋盘一次。
- 假设重力仅在棋盘完全旋转后才生效。
- 仅在重力作用结束后检查获胜者。
输入格式
输入的第一行包含测试用例的数量 T。接下来是 T 个测试用例,每个测试用例的第一行包含整数 N 和 K。接下来的 N 行,每行包含恰好 N 个字符,表示棋盘的初始位置,格式与上述图示相同。
每个测试用例的初始位置都是 Join-K 游戏中可能出现的合法位置。特别地,没有任何玩家在初始状态下已经连成了 K 个棋子。
输出格式
对于每个测试用例,输出一行 "Case #x: y",其中 x 是用例编号(从 1 开始),y 是 "Red"、"Blue"、"Neither" 或 "Both" 之一。这里 y 表示在旋转棋盘后,哪位玩家或哪些玩家会有 K 个棋子连成一线。
数据范围
$1 \le T \le 100$。
$3 \le K \le N$。
小数据集(测试集 1 - 可见;11 分)
$3 \le N \le 7$。
大数据集(测试集 2 - 隐藏;12 分)
$3 \le N \le 50$。
样例
输入格式 1
4 7 3 ....... ....... ....... ...R... ...BB.. ..BRB.. .RRBR.. 6 4 ...... ...... .R...R .R..BB .R.RBR RB.BBB 4 4 R... BR.. BR.. BR.. 3 3 B.. RB. RB.
输出格式 1
Case #1: Neither Case #2: Both Case #3: Red Case #4: Blue