Domeniko 已经在床上躺了将近两个星期,因为他的朋友 Nedjeljko 不小心把一块大石头砸在了他的左脚上。由于 Domeniko 已经解决了自 1998 年以来所有克罗地亚国家队选拔赛的题目,他必须找到一种新的消磨时间的方法。
Domeniko 的新游戏是在一个 $R \times C$ 的网格棋盘上进行的。起初,每个格子要么是空的,要么被障碍物(墙)阻挡。Domeniko 通过将一块石头放入某一列的最上方一行,然后让重力完成剩下的工作,从而将石头投入棋盘中。
重力的作用规则如下:
- 如果石头下方的格子是墙,或者石头已经处于某一列的最底部一行,则石头停留在当前位置。
- 如果石头下方的格子是空的,则石头移动到该格子。
- 如果石头下方的格子包含另一块石头,则下落的石头可能会向侧面滑动:
- 如果石头的左侧和左下方格子都是空的,则石头向左滑动一格。
- 如果石头没有向左滑动,且右侧和右下方格子都是空的,则石头向右滑动一格。
- 否则,石头停留在当前位置,且不再移动。
在前一块石头停止移动之前,Domeniko 绝不会投入下一块石头。
已知 Domeniko 依次将石头投入的列,请编写一个程序,画出 Domeniko 投完所有石头后的棋盘状态。
注意:Domeniko 绝不会将石头投入第一行不为空的列中。
输入格式
第一行包含两个整数 $R$ 和 $C$($1 \le R \le 30000$,$1 \le C \le 30$),表示棋盘的大小。
接下来的 $R$ 行,每行包含 $C$ 个字符,表示棋盘的初始布局。字符 . 表示空地,大写字母 X 表示被墙阻挡的格子。
下一行包含一个整数 $N$($1 \le N \le 100000$),表示 Domeniko 投入的石头数量。
接下来的 $N$ 行,每行包含一个 $1$ 到 $C$ 之间的整数,表示 Domeniko 投入石头的列(最左侧的列为第 $1$ 列)。
注意:在 $60\%$ 的测试数据中,$R$ 将不超过 $30$。
输出格式
输出 $R$ 行,每行包含 $C$ 个字符,表示棋盘的最终布局。石头应当用大写字母 O 表示。
样例
输入格式 1
5 4 .... .... X... .... .... 4 1 1 1 1
输出格式 1
.... O... X... .... OOO.
输入格式 2
7 6 ...... ...... ...XX. ...... ...... .XX... ...... 6 1 4 4 6 4 4
输出格式 2
...... ...O.. ...XX. ...... .OO... .XX... O..O.O
说明
在第一个样例中,所有的石头都被投入到第一列:
- 第一块石头停在墙(
X)的上方。 - 第二块石头落在第一块石头上,向右滑动,并停在第二列的底部。
- 第三块石头先落在第一块石头上,再落在第二块石头上,向左滑动,并停在第一列的底部。
- 第四块石头先落在第一块石头上,再落在第二块石头上,然后向右滑动。