우편배달부 Joe

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

우편배달부 Joe는 운동 마니아입니다. 그의 배달 구역에는 한 줄로 늘어선 집 20채가 있고, 그는 매일 이 줄을 여러 번 오르내려야 하는 배달 과제를 스스로에게 부여합니다. 전형적인 과제는 다음과 같은 형태입니다.

3 U3 D2 U1 U6 D4 D5 U7 U9 D5 D3 U5 U4 D2 D5 U8

이는 Joe가 먼저 3번 집에 배달한 뒤, 거리를 따라 위로 3칸 이동해 6번 집에 배달하고, 이어서 아래로 2칸 이동해 4번 집에 배달하는 식으로 진행한다는 뜻입니다. 집은 거리 아래쪽 끝의 1번부터 20번까지 차례대로 번호가 매겨져 있습니다.

매일 모든 집이 반드시 배달을 받는 것은 아니지만, Joe의 지시는 같은 집을 두 번 방문하게 하거나 집이 늘어선 줄의 양 끝을 벗어나게 해서는 안 됩니다.

Joe를 돕는 프로그램을 작성하세요. 프로그램은 Joe가 스스로 세운 과제가 올바른지 검사하고, 올바르다면 배달을 받지 못한 집들을 알려 주어야 합니다.

입력

입력은 Joe가 세운 여러 개의 과제로 이루어지며, 한 줄에 하나씩 주어집니다. 마지막 줄은 # 문자 하나만 담고 있으며, 이 줄은 처리하지 않습니다.

각 과제는 하루치 배달을 나타냅니다. 각 줄은 정수 $S$ ($1 \le S \le 20$)로 시작하며, 이는 Joe가 첫 배달을 하는 집입니다. 그 뒤에는 문자-숫자 쌍이 하나의 공백으로 구분되어 이어집니다. 문자는 U 또는 D이며, U는 거리를 따라 위로(집 번호 증가) 이동함을, D아래로(집 번호 감소) 이동함을 뜻합니다. 숫자는 이동할 집의 수를 나타내는 한 자리 정수입니다.

출력

입력의 각 과제마다 한 줄씩 출력합니다.

과제가 올바르면(어떤 집도 두 번 방문하지 않고, Joe가 거리의 양 끝을 벗어나지 않으면) 그날 배달을 받지 못한 집들을 번호가 커지는 순서대로 하나의 공백으로 구분하여 출력합니다. 모든 집이 배달을 받으면 none을 출력합니다.

과제가 올바르지 않으면 illegal을 출력합니다.

힌트

어떤 이동이 Joe를 이미 배달한 집으로 데려가거나, 1번 집 아래 또는 20번 집 위로 벗어나게 하면 그 과제는 올바르지 않습니다.

첫 번째 예시에서 Joe는 16번 배달하므로 4개의 집이 배달을 받지 못합니다. 두 번째 예시에서는 7번째 배달(D4)이 Joe를 1번 집으로 되돌리는데, 1번 집은 이미 2번째 배달을 받았으므로 그 과제는 illegal입니다.