진주
시간 제한5초메모리 제한1024 MB
진주 문자열을 격자 위의 닫힌 경로로 배치하여, 마시우 규칙과 세 가지 제약을 지키는 사전순으로 가장 작은 경로를 찾습니다.
문제
니콜리의 보석 가게는 흑진주와 백진주로 이루어진 목걸이를 판매한다. 진주는 길이가 인 끈에 단단히 붙어 있으며, 끈의 각 단위 길이마다 진주가 하나 있거나 비어 있다. 목걸이는 격자로 나뉜 직사각형 벨벳 판 위에 진열된다. 각 격자 칸에는 진주가 놓이거나, 빈 끈이 놓이거나, 아무것도 놓이지 않는다. 끈의 모든 구간은 가로 또는 세로 방향이다. 제대로 진열된 목걸이는 칸들을 잇는 닫힌 경로이며, 자기 자신과 교차하지 않는다.
이 진열은 퍼즐 '마스유(Masyu)'의 규칙을 따른다. 목걸이를 경로를 따라 놓을 때(끈의 단위와 격자 칸의 간격이 일치할 때) 진주는 다음 조건을 만족해야 한다.
- 백진주는 경로의 꺾임이 있는 칸에 놓을 수 없다. 또한 진주를 지나는 경로를 이어 주는 양옆 인접 두 칸 중 적어도 하나에는 꺾임이 있어야 한다.
- 흑진주는 반드시 경로의 꺾임이 있는 칸에 놓여야 한다. 또한 흑진주를 지나는 경로를 이어 주는 두 칸 어디에도 꺾임이 없어야 한다.
니콜리의 고객은 까다로워서 조건을 세 가지 더 건다. 첫째, 목걸이 길이의 절반 이상은 빈 끈이 아니라 진주여야 한다. 둘째, 흑진주 개수가 백진주 개수의 두 배 이상이어야 한다. 셋째, 두 진주 사이에 빈 끈이 5 단위보다 길게 이어지면 안 된다.
니콜리는 이 조건을 모두 지킨 목걸이를 만들어도, 위 규칙대로 진열하지 못하는 경우가 있다. 그럴 때 도와달라.
입력
첫 줄에는 정수 , , 이 주어진다. ()는 끈의 길이이고, 과 ()은 각각 격자의 행 수와 열 수이다. 왼쪽 위 칸은 1행 1열이다.
둘째 줄에는 B, W, .로만 이루어진 길이 의 문자열이 주어진다. B는 흑진주, W는 백진주, .은 빈 끈을 뜻한다. 첫 문자는 항상 진주(B 또는 W)이다.
셋째 줄에는 첫 진주가 놓인 격자 칸의 행 과 열 (, )가 주어진다.
출력
목걸이를 격자 안에 진열할 수 있으면, 그 배치의 경로를 출력한다. 첫 진주는 행 열에 있고, 경로는 입력 문자열과 같은 순서로 진주와 빈 끈을 나타낸다. 각 문자는 N, S, E, W 중 하나로, 현재 칸에서 경로가 나아가는 방향(북, 남, 동, 서)이다. 경로는 닫혀 있어야 하며 자기 자신과 교차해서는 안 된다.
조건을 만족하는 경로가 여러 개면 사전순으로 가장 작은 설명을 출력한다. 마스유 조건을 만족하는 경로가 없으면 impossible을 출력한다.