시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 512 MB97735327036.290%

문제

크기가 $N \times M$인 미로가 있다. 미로는 격자 형태이고 .+로 이루어져 있다. .은 지나갈 수 있는 길을, +는 지나갈 수 없는 벽을 의미한다. 우리는 미로가 입력으로 주어지면, 미로의 두 구멍을 최단 거리로 연결할 때 지나지 않는 길을 표시할 것이다.

미로의 가장자리에 존재하는 .이 미로의 구멍이다. 항상 두 개만 주어지며, 한 구멍에서 다른 구멍으로 최단 경로로 이동해야 한다. 미로의 두 구멍은 서로 이웃하지 않는다.

두 구멍 사이를 최단 경로로 이동할 때 사용하지 않은 길은 @로 표시해야 한다.

주어진 미로를 최단 거리로 이동할 때 사용하지 않은 길을 찾는 프로그램을 작성하시오.

입력

첫 번째 줄에는 미로의 크기 $N, M$이 주어진다. $(3 \le N, M \le 2,001$, $N, M$은 홀수$)$

두 번째 줄부터는 미로의 정보가 주어진다. 두 번째 줄부터 $N$줄에 거쳐 각 줄에는 길이가 $M$이고 .+만으로 이루어진 문자열이 주어진다.

같은 지점으로 돌아오는 길이 존재하지 않고, 두 구멍 사이를 이동할 수 있는 미로만 주어진다.

출력

주어진 미로를 최단 거리로 이동하는 데 사용하지 않은 길을 @로 표시한 결과를 출력한다.

예제 입력 1

7 7
+++++++
+.+....
+.+++.+
+...+.+
+.+.+.+
..+...+
+++++++

예제 출력 1

+++++++
+@+@@..
+@+++.+
+...+.+
+.+.+.+
..+...+
+++++++

예제 입력 2

7 7
+++++++
......+
+.+++.+
+...+.+
+++.+++
+......
+++++++

예제 출력 2

+++++++
..@@@@+
+.+++@+
+...+@+
+++.+++
+@@....
+++++++

예제 입력 3

7 7
+++++++
......+
+++++.+
+.....+
+.+++++
+......
+++++++

예제 출력 3

+++++++
......+
+++++.+
+.....+
+.+++++
+......
+++++++

예제 입력 4

13 11
+++++++++++
+.+.....+.+
+.+.+++.+.+
+...+.+...+
+.+++.+.+.+
+.+...+++.+
+.+++.+.+.+
+.......+..
+.+++++++++
+.......+.+
+.+++++++++
+..........
+++++++++++

예제 출력 4

+++++++++++
+@+.....+@+
+@+.+++.+@+
+...+@+...+
+.+++@+@+.+
+.+@@@+++.+
+.+++@+@+.+
+.@@@@@@+..
+.+++++++++
+.@@@@@@+@+
+.+++++++++
+..........
+++++++++++