#CF4027. 落石术

落石术

题目描述

有一个网格,包含 nn 行和 mm 列,以及三种类型的单元格:

一个空单元格:用 . 表示。

一块石头:用 * 表示。

一个障碍物:用小写字母 o 表示。

所有的石头都会掉下来,直到它们碰到地板(最底层)、障碍物或其他已经无法移动的石头。(换言之,只要石头能往下掉,它就会往下掉。)

模拟该过程。最终的网格是什么样子的?

输入格式

输入由多个测试用例组成。第一行包含整数 t(1t100)t(1≤t≤100) 表示测试用例数。测试用例的描述如下。

每个测试用例的第一行包含两个整数 nnm(1n,m50)m(1≤n,m≤50),分别是网格中的行数和列数。

随后是 nn 行,每行包含 mm 个字符。这些字符中的每一个都是 .*、或 o ——分别是一个空格、一块石头或一个障碍物。

输出格式

对于每个测试用例,输出一个包含 nn 行和 mm 列的网格,输出最终结果。

您不需要在每次测试后输出新行,它在示例中只是为了清晰。

测试样例

3
6 10
.*.*....*.
.*.......*
...o....o.
.*.*....*.
..........
.o......o*
2 9
...***ooo
.*o.*o.*o
5 5
*****
*....
*****
....*
*****
..........
...*....*.
.*.o....o.
.*........
.*......**
.o.*....o*

....**ooo
.*o**o.*o

.....
*...*
*****
*****
*****

样例说明