침입자 따돌리기
면접 대비시간 제한5초메모리 제한1024 MB
각 바퀴는 N개의 숫자가 원형으로 이어져 있고 한 번에 D씩 더하거나 빼집니다. 값들이 팰린드롬이 되도록 하는 최소 회전 수를 구하거나 불가능한지 판별합니다.
문제
보안 키에는 개의 바퀴가 일렬로 있다. 각 바퀴에는 부터 까지의 숫자가 순서대로 적혀 있다. 바퀴를 한 번 돌리면 표시된 숫자를 바로 다음 숫자나 바로 이전 숫자로 바꿀 수 있다. 숫자는 순환한다. 즉 다음은 이고, 이전은 이다.
숨겨진 비밀번호는 없다. 키를 활성화하려면 표시된 숫자열이 회문이어야 한다. 회문은 왼쪽에서 읽든 오른쪽에서 읽든 같은 숫자열을 말한다. 침입자의 움직임을 늦추기 위해 바퀴는 단위로만 돈다. 한 번의 조작으로 를 표시한 바퀴를 또는 를 표시하도록 바꿀 수 있다. 순환 규칙은 다음과 같다. 이면 표시되는 숫자는 이 되고, 이면 표시되는 숫자는 이 된다.
각 바퀴의 현재 숫자가 주어졌을 때, 표시된 숫자열을 회문으로 만드는 데 필요한 최소 조작 횟수를 구하라. 불가능하면 그 사실을 보고하라.
입력
첫 줄에 테스트 케이스 수 가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다. 첫 줄에는 정수 , , 가 주어진다. 둘째 줄에는 정수 가 주어진다. 는 왼쪽에서 번째 바퀴에 현재 표시된 숫자이다.
출력
각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 표시된 숫자열을 회문으로 만드는 데 필요한 최소 조작 횟수이다. 불가능하면 대신 IMPOSSIBLE을 출력한다.
제한
- .
- .
- 모든 에 대해 .
힌트
예제 1에서는 숫자열을 로 만들 수 있으며, 이는 회문이다. 조작은 3번이다. 첫 번째와 네 번째 바퀴에 덧셈을 한 번씩, 다섯 번째 바퀴에 뺄셈을 한 번 사용한다. 이보다 적은 횟수로는 불가능하다.
예제 2는 이미 회문이므로 조작이 필요 없다.
예제 3에서는 회문이 되려면 두 숫자가 같아야 한다. 바퀴 값은 씩만 움직이는데, 현재 두 숫자의 홀짝이 다르므로 이는 불가능하다.