#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1100;
int dp[N];
int price[N];
int main(){
int n;
//freopen("d://uva_in.txt","r",stdin);
while(scanf("%d",&n)!=EOF&&n){
memset(dp,0,sizeof(dp));
memset(price,0,sizeof(price));
for(int i=0;i<n;i++){
scanf("%d",&price[i]);
}
int m;
scanf("%d",&m);
if(m<5){printf("%d\n",m);continue;}
m-=5;
sort(price,price+n);//本来背包问题 不用排序 但是要把最大的留在最后减,所以排序
for(int i=0;i<n-1;i++){//遍历菜的数量// 把最贵的留在最后时减
for(int j=m;j-price[i]>=0;j--){//遍历余额 到0 余额减去i菜的价格
//不放第i件物品:前i-1件物品放入容量为v的背包中
//放第i件物品 :前i-1件物品放入剩下的容量为v-c[i]的背包中
/*
dp[j] j元 最多可以买价值多少钱的菜
j-price[i] j元减去第i个商品后余额
dp[j-price[i]]+price[j] j元减第i个商品后余额 最多可以买价值多少钱的菜
dp[j-price[i]]+price[j]+price[i] 买第i个商品后 菜的最大价值
*/
dp[j]=max(dp[j],dp[j-price[i]]+price[i]);
}
}
printf("%d\n",m+5-price[n-1]-dp[m]);
}
}