시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
R행 C열로 이루어진 보안 패널이 있다. 버튼은 왼쪽 위부터 오른쪽으로 1번부터 R x C번까지 번호가 붙어 있다.
처음에는 모든 버튼이 꺼져 있다. 버튼 하나를 누르면 입력으로 주어진 3 x 3 패턴이 그 버튼을 중심으로 놓이고, 패턴에서 *인 위치에 해당하는 패널 안의 버튼들이 모두 상태를 바꾼다. 패널 밖으로 벗어나는 위치는 무시한다. 상태 변경은 켜진 버튼은 꺼지고, 꺼진 버튼은 켜지는 것을 뜻한다.
패널을 해제하려면 모든 버튼이 켜져 있어야 한다. 같은 버튼을 두 번 누를 필요는 없으므로, 각 버튼은 누르거나 누르지 않는 두 가지 선택만 고려하면 된다.
입력은 여러 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫 줄에는 패널의 행 수 R과 열 수 C가 주어진다. (1 <= R, C <= 5)
다음 세 줄에는 길이 3인 문자열이 하나씩 주어져 버튼을 눌렀을 때 적용되는 패턴을 나타낸다. 가운데 칸은 누른 버튼의 위치를 뜻한다. *는 해당 위치의 버튼 상태가 바뀜을, .은 바뀌지 않음을 뜻한다.
0 0이 주어지면 입력이 끝난다.
각 테스트 케이스마다 먼저 Case #i를 한 줄에 출력한다. 여기서 i는 1부터 시작하는 테스트 케이스 번호이다.
가능하다면 모든 버튼을 켜기 위해 눌러야 하는 버튼 번호를 오름차순으로 한 줄에 출력한다. 누르는 버튼 수는 최소여야 한다. 최소 해가 여러 개라면, 출력할 수열을 뒤집었을 때 사전순으로 가장 앞서는 수열을 선택한다.
불가능하다면 Impossible.을 출력한다.