만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

삼월 초하루

면접 대비

시간 제한1초메모리 제한1024 MB

요약
물을 숙우 사이로 옮길 때마다 5℃씩 식는 규칙에 따라, 세 숙우에서 목표 온도와 최종 배치를 40번 이하의 이동으로 만드는 방법을 찾습니다.
난이도

보통10점 중 4점

유형
BFS, 시뮬레이션
정답자
아직 제출이 없습니다

문제

차 모임 '삼월 초하루'가 있다. 회원들은 자주 모여 차와 다식을 함께 먹으며 친목을 다진다.

어느 날 차 모임을 이끄는 팽주(차를 우리는 사람) 초승달은 자주 가는 찻집 사장님에게서 다음 사실을 들었다.

숙우에 담긴 뜨거운 물을 다른 숙우로 옮길 때마다 물의 온도가 5\mathbf{5}℃ 감소한다.

숙우는 '공도배'라고도 하며, 우린 물을 나누거나 차를 우릴 물을 식힐 때 쓰는 다구이다. 물을 옮길 때마다 온도가 낮아진다는 사실을 안 초승달은 가진 숙우로 목표 온도가 서로 다른 물을 여러 개 만들어, 한 번에 여러 종류의 차를 우리고 싶어졌다.

초승달은 1번부터 NN번까지 NN개의 숙우를 가지고 있다. 1번부터 N−1N-1번까지의 숙우에는 1번부터 N−1N-1번까지의 물이 순서대로 채워져 있고, NN번 숙우는 비어 있다. N−1N-1개의 물에는 각각 목표 온도가 있다. 처음 숙우에 담긴 물은 100℃이다. 물은 빈 숙우로만 옮길 수 있으며, 숙우에 담긴 물은 전부 옮겨야 한다.

숙우 사이로 물을 옮겨 온도를 낮추고, 모든 물이 목표 온도에 맞도록 만들어 보자. 그리고 1번부터 N−1N-1번까지의 물을 알맞은 숙우에 담아 보자.

입력

첫째 줄에는 숙우의 개수 NN이 주어진다. (N=3)(N=3)

둘째 줄에는 1번부터 N−1N-1번까지 물의 목표 온도 tit_i가 공백으로 구분되어 주어진다. (5≤ti≤100(5\le t_i\le 100, tit_i는 55의 배수))

셋째 줄에는 물을 옮긴 후 1번부터 NN번까지의 숙우에 담겨야 하는 물의 번호가 공백으로 구분되어 주어진다. 물의 번호는 1부터 N−1N-1까지 중복되지 않는 양의 정수이다. 빈 숙우는 00으로 주어진다.

출력

목표를 달성할 수 없다면 첫째 줄에 −1-1을 출력한다.

그렇지 않다면 첫째 줄에 이동 횟수 K$$(0\le K\le 40)를 출력하고, 둘째 줄부터 KK개의 줄에 걸쳐 숙우 속 물을 옮기는 과정 x yx\ y를 공백으로 구분하여 출력한다. xx와 yy는 서로 다른 양의 정수이며, x yx\ y는 xx번 숙우에 담긴 물을 yy번 숙우로 옮긴다는 뜻이다.

가능한 방법이 여러 가지라면 그중 아무거나 한 가지를 출력한다.

예제3

  1. 예제 1

    입력
    3
    95 95
    0 1 2
    
    예상 출력
    2
    2 3
    1 2
    
  2. 예제 2

    입력
    3
    85 90
    1 0 2
    
    예상 출력
    5
    1 3
    2 1
    3 2
    1 3
    2 1
    
  3. 예제 3

    입력
    3
    100 95
    2 1 0
    
    예상 출력
    -1