Andrew 是一位拼图爱好者,他热衷于创作有趣的拼图。有一天,他设计了一个新游戏,规则如下:
- 游戏在一个巨大的棋盘上进行,棋盘有 $n$ 行 $m$ 列。坐标 $(i, j)$ ($1 \le i \le n, 1 \le j \le m$) 表示第 $i$ 行第 $j$ 列的方格。
- 游戏中有两种棋子:黑棋和白棋。游戏开始时,部分方格上已经放置了棋子,其余方格为空。
- 玩家必须在所有空方格上放置棋子。黑棋和白棋的数量充足,足以填满所有方格。
- 当棋盘上的所有方格都填满棋子后,Andrew 开始计算玩家的得分。得分计算算法如下:对于任意两个方格 $(x_1, y_1)$ 和 $(x_2, y_2)$,如果满足以下 3 个条件,玩家得 1 分:
- $(x_1, y_1)$ 上有一枚黑棋。
- $(x_2, y_2)$ 上有一枚白棋。
- $|x_1 - x_2| = a$ 且 $|y_1 - y_2| = b$,其中 $a$ 和 $b$ 是 Andrew 在游戏开始前定义的两个常数。
Andrew 很困惑,因为他不知道游戏中能得到的最高得分是多少。你能帮他找到解决这个拼图的最佳方案吗?
输入格式
输入的第一行包含一个整数 $T$,表示测试用例的总数。 每个测试用例的第一行包含 4 个整数 $n, m, a, b$,分别表示行数、列数以及 Andrew 定义的两个常数。接下来的 $n$ 行描述了拼图的初始状态,第 $i$ 行是一个长度为 $m$ 的字符串 $c_{i,1}, c_{i,2}, \dots, c_{i,m}$,其中 $c_{i,j}$ 表示游戏开始时 $(i, j)$ 上的棋子类型。黑棋用大写字母 'B' 表示,白棋用大写字母 'W' 表示,空方格用句点 '.' 表示。
- $1 \le T \le 1000$
- $1 \le n, m \le 100$
- $1 \le a \le n, 1 \le b \le m$
- 至多有 20 个测试用例满足 $n > 30$ 或 $m > 30$
输出格式
对于每个测试用例,第一行输出一个整数,表示玩家能得到的最高得分。接下来的 $n$ 行,每行输出 $m$ 个字符,表示为了获得最高得分,棋盘上每个方格应放置的棋子类型。输出格式与输入格式相同。
注意:如果存在多种获得最高得分的方式,请输出 ASCII 码字典序最小的那一种('B' 小于 'W')。
样例
输入 1
2 2 2 1 1 .. .. 2 2 1 1 .W .B
输出 1
2 BB WW 2 WW BB