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

검은 칸은 땅을 의미하고, 빨간 칸은 블록을 의미한다.
블록에 해당되는 칸들은 한 덩어리를 이루고 있으며, 땅에 해당되는 칸들도 한 덩어리를 이루고 있다.
땅은 움직이지 않지만, 블록은 매 초마다 한 칸씩 아래로 움직인다.
물론 블록 아래에 땅이 있으면 블록은 움직이지 않는다.
위와 같은 경우, 1초 후의 게임판의 상태는 아래와 같다.
시간이 더 지나도 게임판은 아래와 같은 형태이다.

대형이는 문뜩 블록이 다 낙하한 후의 게임판의 상태를 알려고 한다.
허나 격자의 크기가 큰 경우, 블록이 낙하하는 데 많은 시간이 걸리기 때문에 게임판의 상태를 알기 쉽지 않다.
대형이를 도와 충분한 시간이 지난 후 게임판의 상태를 구하는 프로그램을 작성하여라.
입력
첫 번째 줄에 게임판의 크기 R, S가 주어진다. (3 ≤ R,S ≤ 3,000)
두 번째 줄부터 R개의 줄에는 게임판의 정보가 주어진다.
'.'는 빈 공간, '#'는 땅, 'X'는 블록을 의미한다.
문제를 간단히 하기 위하여, 가장 마지막 줄에는 오직 '#'로만 주어진다.
또, 특정 줄에는 '.'만 있어서 그 위의 줄들에는 '#'가 없고, 그 아래의 줄들에는 'X'가 없음이 보장된다.
출력
충분한 시간이 지난 후 게임판의 상태를 출력한다.
예제1
입력
56
.XXXX.
...X..
......
#..###
######
출력
......
.XXXX.
...X..
#..###
######
예제2
입력
97
XXX.XXX
X.XXX.X
X..X..X
X.....X
.......
.#...#.
.##.##.
.#####.
#######
출력
.......
.......
.......
.......
XXX.XXX
X#XXX#X
X##X##X
X#####X
#######
출처
COCI 2014/2015 contest6 3