서버 옮기기
시간 제한3초메모리 제한1024 MB
랙 A의 서버 N대 중 제조사 X 서버는 B로, 나머지는 C로 옮기는 최소 작업 순서를 출력합니다.
문제
기술자는 매우 좁은 서버실에 파견되어 랙 A에 있는 서버를 랙 B와 C로 옮긴다. 랙 A에는 두 제조사의 서버가 있다. 기술자는 제조사 X의 서버를 모두 랙 B로, 제조사 Y의 서버를 모두 랙 C로 옮겨야 한다.
서버는 랙의 위쪽에서부터만 넣을 수 있다. 각 칸에는 전원 공급 장치가 있는데, 그 칸의 서버가 소비하는 전력이 바로 아래 서버의 소비 전력보다 작을 때만 작동한다. 각 랙의 맨 아래 전원 공급 장치는 두 제조사 중 어느 쪽의 서버에든 전력을 공급할 수 있다.
기술자는 한 번에 서버 한 대만 정지할 수 있다. 따라서 옮길 때마다 랙의 가장 위쪽 사용 중인 칸에 있는 서버를 정지하고, 다른 랙의 첫 번째 빈 칸에 넣은 뒤 다시 켠다. 소비 전력이 큰 서버를 소비 전력이 작은 서버 위에 올려놓아서는 안 된다.
서버를 옮기는 계획 중 연산 횟수가 가장 적은 계획을 구하는 프로그램을 작성하라.
입력
첫 줄에는 랙 A에 있는 서버의 수 ()과 제조사 X 서버의 수 ()가 주어진다. 둘째 줄에는 제조사 X 서버의 번호 개가 오름차순으로 주어진다. 서버는 소비 전력이 작은 순서대로 부터 까지 번호가 매겨져 있다.
출력
연산을 한 줄에 하나씩 출력한다. 각 줄에는 출발 랙의 이름, '->', 도착 랙의 이름을 차례로 출력한다.