페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

블록 (METEOR) 2초 128MB

문제

대형이는 R행 S열의 격자 상에서 블록이 낙하하는 게임을 만들려고 한다.

 

 

검은 칸은 땅을 의미하고, 빨간 칸은 블록을 의미한다. 

블록에 해당되는 칸들은 한 덩어리를 이루고 있으며, 땅에 해당되는 칸들도 한 덩어리를 이루고 있다. 

땅은 움직이지 않지만, 블록은 매 초마다 한 칸씩 아래로 움직인다. 

물론 블록 아래에 땅이 있으면 블록은 움직이지 않는다.

 

위와 같은 경우, 1초 후의 게임판의 상태는 아래와 같다. 

시간이 더 지나도 게임판은 아래와 같은 형태이다.

 

 

대형이는 문뜩 블록이 다 낙하한 후의 게임판의 상태를 알려고 한다. 

허나 격자의 크기가 큰 경우, 블록이 낙하하는 데 많은 시간이 걸리기 때문에 게임판의 상태를 알기 쉽지 않다. 

대형이를 도와 충분한 시간이 지난 후 게임판의 상태를 구하는 프로그램을 작성하여라.

 


입력

첫 번째 줄에 게임판의 크기 R, S가 주어진다. (3 ≤ R,S ≤ 3,000)

두 번째 줄부터 R개의 줄에는 게임판의 정보가 주어진다.

'.'는 빈 공간, '#'는 땅, 'X'는 블록을 의미한다.

문제를 간단히 하기 위하여, 가장 마지막 줄에는 오직 '#'로만 주어진다. 

또, 특정 줄에는 '.'만 있어서 그 위의 줄들에는 '#'가 없고, 그 아래의 줄들에는 'X'가 없음이 보장된다.


출력

충분한 시간이 지난 후 게임판의 상태를 출력한다.

예제 #1

5 6

.XXXX.
...X..
......
#..###
######
......

.XXXX.
...X..
#..###
######

예제 #2

9 7

XXX.XXX
X.XXX.X
X..X..X
X.....X
.......
.#...#.
.##.##.
.#####.
#######
.......

.......
.......
.......
XXX.XXX
X#XXX#X
X##X##X
X#####X
#######
로그인해야 코드를 작성할 수 있어요.