엘리베이터
시간 제한2초메모리 제한256 MB
각자 정해진 층에만 서는 엘리베이터를 갈아타며 출발 층에서 도착 층까지 이동 거리를 가장 짧게 만듭니다.
문제
컴퓨터공학과 새 건물에는 엘리베이터가 여러 대 있지만 계단은 없다. 제조사는 강의실과 사무실로 가기 쉽도록 각 엘리베이터가 미리 정해진 층에만 서게 설정했다. 어떤 엘리베이터는 홀수 층에만 서고, 어떤 엘리베이터는 짝수 층에만 선다. 여기서 끝이 아니다. 엘리베이터 안과 밖의 버튼도 그 엘리베이터가 서기로 정해진 층에 대해서만 작동한다. 이 설정으로 교수진은 목적지 층까지 더 빨리 가게 되었지만, 학생처럼 건물에 익숙하지 않은 사람은 크게 혼란스러워졌다.
사람 가 층에 있고 층으로 가려고 한다. 이동 시간을 가장 짧게 하려면 는 어느 엘리베이터를 타고, 어느 층에서 어느 엘리베이터로 갈아타야 하는가? 의 이동 경로를 라고 하면, 최소로 만들려는 이동 시간은 다음과 같다.
경로의 한 구간 은 어떤 엘리베이터 한 대가 과 모두에 설 때만 탈 수 있다. 이 엘리베이터를 쓰는 사람을 도와줄 프로그램을 작성하라.
입력
입력에는 테스트 케이스가 여러 개 들어 있다. 각 테스트 케이스의 첫 줄에는 엘리베이터의 대수 (), 출발 층, 도착 층이 순서대로 주어진다. 이어지는 개 줄 가운데 번째 줄에는 번째 엘리베이터가 설 수 있는 층의 개수 ()가 먼저 오고, 그 뒤에 층 번호 개가 온다. 층 번호는 모두 음이 아닌 정수이며 150보다 작다. 층 번호가 정렬되어 있다는 보장은 없다.
입력은 0 0 0만 있는 줄로 끝난다. 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 출발 층에서 도착 층까지 가는 데 필요한 최소 이동 시간을 한 줄에 출력한다. 출발 층에서 도착 층으로 가는 방법은 항상 존재한다.