아름다운 직사각형
시간 제한1초메모리 제한128 MB
지워진 칸에 대각선을 채워 모든 선분의 끝점이 세 색으로 구분되도록 하고 사전 순으로 가장 앞선 배치를 구합니다.
문제
세로 길이가 , 가로 길이가 인 직사각형이 있다. 이 직사각형을 넓이가 1인 정사각형 격자 개로 나누는 선을 모두 긋는다. 각 격자에는 왼쪽 위에서 오른쪽 아래로 가는 대각선과 오른쪽 위에서 왼쪽 아래로 가는 대각선 중 하나를 그린다. 모든 격자에 대각선이 하나씩 그려진 직사각형을 올바른 직사각형이라고 한다.
이제 그림에 있는 모든 점, 즉 직사각형의 꼭짓점과 선분끼리 만나는 교점을 빨간색, 초록색, 파란색 중 한 가지로 칠한다. 선분으로 바로 이어진 두 점의 색이 항상 다르도록 모든 점을 칠할 수 있으면, 그 올바른 직사각형을 아름다운 직사각형이라고 한다.
홍준이는 아름다운 직사각형을 하나 가지고 있었는데, 옆에서 장난을 친 명우 때문에 일부 격자의 대각선이 지워졌다. 남아 있는 대각선을 모두 만족하는 아름다운 직사각형 중에서 사전순으로 가장 앞서는 것을 구하자.
사전순은 각 격자의 대각선을 맨 윗줄부터 한 줄씩, 한 줄 안에서는 왼쪽에서 오른쪽으로 읽어 만든 문자열로 비교한다. 대각선은 \와 /로 나타내고, /의 아스키 코드가 47, \의 아스키 코드가 92이므로 /가 \보다 사전순으로 앞선다.
입력
첫 줄에 세로 길이 과 가로 길이 이 주어진다. ()
다음 개의 줄에는 각 줄마다 길이가 인 문자열이 주어진다. 번째 줄의 번째 문자는 위에서 번째, 왼쪽에서 번째 격자에 남아 있는 대각선으로 \ 또는 /이다. 명우가 지운 격자는 ?로 주어진다.
출력
남아 있는 대각선을 모두 만족하는 아름다운 직사각형 중 사전순으로 가장 앞서는 것을 입력과 같은 형식으로 개의 줄에 출력한다. 그런 직사각형이 없으면 impossible을 출력한다.