주방 계량

용량이 다른 컵들끼리 따르면서 옮긴 양의 합을 최소화해 가장 큰 컵에 정확히 V만큼 남기고, 불가능하면 impossible을 출력합니다.

보통6최단 경로그래프아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

요리법을 따라 액체의 부피를 정확히 재려고 한다. 부엌에는 크기가 서로 다른 컵이 여러 개 있지만 어느 컵에도 전체 용량 말고는 눈금이 없고, 원하는 부피와 용량이 같은 컵도 없다. 가장 큰 컵을 가득 채운 상태에서 시작한다. 각 시점에 컵마다 얼마가 담겨 있는지 정확히 알기 위해, 액체가 남아 있는 컵에서 다른 컵으로 붓는 동작만 쓴다. 한 번 붓기 시작하면 받는 컵이 가득 차거나 붓는 컵이 빌 때까지, 둘 중 먼저 일어나는 쪽까지 붓는다.

간단한 예로 용량 55인 컵이 가득 찬 채로 시작하고 용량 22인 컵이 하나 더 있으며, 가장 큰 컵에 33을 남기는 것이 목표라고 하자. 큰 컵에서 작은 컵으로 부으면 작은 컵이 용량 22를 채우는 순간 멈추고, 큰 컵에는 정확히 33이 남는다. 그림 1(a)를 보자.

그림 1: 컵 사이에서 붓기

두 번째 예로 용량이 99, 66, 33, 22인 컵 네 개가 있고, 가장 큰 컵만 가득 찬 상태에서 시작해 가장 큰 컵에 88을 남기는 것이 목표라고 하자. 편의상 용량 99인 컵을 9컵이라 부르고 나머지도 같은 방식으로 부른다. 6컵과 2컵의 용량을 합하면 88이므로, 9컵에서 두 컵을 모두 채운 뒤 9컵에 남은 11을 3컵에 비우고, 가득 찬 6컵과 2컵을 9컵으로 되돌리면 된다. 그림 1(b)를 보자. 이 방법으로 부은 총량은 6+2+1+6+2=176 + 2 + 1 + 6 + 2 = 17이다. 같은 목표를 다른 방법으로도 이룰 수 있다. 9컵에서 3컵으로 33을 부어 9컵에 66을 남기고, 3컵에서 2컵을 채워 3컵에 11을 남긴 다음, 가득 찬 2컵을 9컵으로 되돌리면 9컵에 정확히 88이 담긴다. 이때 부은 총량은 3+2+2=73 + 2 + 2 = 7뿐이다. 그림 1(c)를 보자.

마지막 예로 용량이 1111, 1010, 77, 44, 22인 컵이 있고 11컵만 가득 찬 상태에서 시작해 11컵에 1010을 남기는 것이 목표라고 하자. 10컵을 채우고 11컵에 남은 11을 다른 컵에 비운 뒤 가득 찬 10컵을 11컵으로 되돌리면 된다. 그림 2(a)가 이 방법이다. 이 세 번의 붓기로 옮긴 총량은 10+1+10=2110 + 1 + 10 = 21이다. 그림 2(b)는 붓는 횟수는 더 많지만 옮긴 액체의 양은 더 적은 순서를 보여 준다.

그림 2: 더 많은 붓기

입력

입력은 양의 정수로 이루어진 한 줄이다.

n c1 c2  cn Vn\ c_1\ c_2\ \dots\ c_n\ V

컵은 nn개이고 2n52 \le n \le 5이며, 용량은 64c1>c2>>cn164 \ge c_1 > c_2 > \dots > c_n \ge 1을 만족한다. V<c1V < c_1은 목표 부피다. 용량 c1c_1인 가장 큰 컵은 가득 찬 채로, 나머지 컵은 빈 채로 시작하며, 가장 큰 컵에 정확히 VV만큼 담는 것이 목표다.

출력

목표를 이루기 위해 부어야 하는 액체의 최소 총량을 출력한다. 목표를 이룰 수 없으면 impossible을 출력한다.