용량이 다른 컵들끼리 따르면서 옮긴 양의 합을 최소화해 가장 큰 컵에 정확히 V만큼 남기고, 불가능하면 impossible을 출력합니다.
보통6최단 경로그래프아직 제출이 없습니다시간 제한3초메모리 제한256 MB요리법을 따라 액체의 부피를 정확히 재려고 한다. 부엌에는 크기가 서로 다른 컵이 여러 개 있지만 어느 컵에도 전체 용량 말고는 눈금이 없고, 원하는 부피와 용량이 같은 컵도 없다. 가장 큰 컵을 가득 채운 상태에서 시작한다. 각 시점에 컵마다 얼마가 담겨 있는지 정확히 알기 위해, 액체가 남아 있는 컵에서 다른 컵으로 붓는 동작만 쓴다. 한 번 붓기 시작하면 받는 컵이 가득 차거나 붓는 컵이 빌 때까지, 둘 중 먼저 일어나는 쪽까지 붓는다.
간단한 예로 용량 5인 컵이 가득 찬 채로 시작하고 용량 2인 컵이 하나 더 있으며, 가장 큰 컵에 3을 남기는 것이 목표라고 하자. 큰 컵에서 작은 컵으로 부으면 작은 컵이 용량 2를 채우는 순간 멈추고, 큰 컵에는 정확히 3이 남는다. 그림 1(a)를 보자.

그림 1: 컵 사이에서 붓기
두 번째 예로 용량이 9, 6, 3, 2인 컵 네 개가 있고, 가장 큰 컵만 가득 찬 상태에서 시작해 가장 큰 컵에 8을 남기는 것이 목표라고 하자. 편의상 용량 9인 컵을 9컵이라 부르고 나머지도 같은 방식으로 부른다. 6컵과 2컵의 용량을 합하면 8이므로, 9컵에서 두 컵을 모두 채운 뒤 9컵에 남은 1을 3컵에 비우고, 가득 찬 6컵과 2컵을 9컵으로 되돌리면 된다. 그림 1(b)를 보자. 이 방법으로 부은 총량은 6+2+1+6+2=17이다. 같은 목표를 다른 방법으로도 이룰 수 있다. 9컵에서 3컵으로 3을 부어 9컵에 6을 남기고, 3컵에서 2컵을 채워 3컵에 1을 남긴 다음, 가득 찬 2컵을 9컵으로 되돌리면 9컵에 정확히 8이 담긴다. 이때 부은 총량은 3+2+2=7뿐이다. 그림 1(c)를 보자.
마지막 예로 용량이 11, 10, 7, 4, 2인 컵이 있고 11컵만 가득 찬 상태에서 시작해 11컵에 10을 남기는 것이 목표라고 하자. 10컵을 채우고 11컵에 남은 1을 다른 컵에 비운 뒤 가득 찬 10컵을 11컵으로 되돌리면 된다. 그림 2(a)가 이 방법이다. 이 세 번의 붓기로 옮긴 총량은 10+1+10=21이다. 그림 2(b)는 붓는 횟수는 더 많지만 옮긴 액체의 양은 더 적은 순서를 보여 준다.

그림 2: 더 많은 붓기
입력은 양의 정수로 이루어진 한 줄이다.
n c1 c2 … cn V
컵은 n개이고 2≤n≤5이며, 용량은 64≥c1>c2>⋯>cn≥1을 만족한다. V<c1은 목표 부피다. 용량 c1인 가장 큰 컵은 가득 찬 채로, 나머지 컵은 빈 채로 시작하며, 가장 큰 컵에 정확히 V만큼 담는 것이 목표다.
목표를 이루기 위해 부어야 하는 액체의 최소 총량을 출력한다. 목표를 이룰 수 없으면 impossible을 출력한다.