#include<bits/stdc++.h>
using namespace std;
int coins[100];
int amount,n;
int dp[100][1000];
int coin_change(int i,int amount)
{
if(i==n)
{
if(amount==0)
return 0;
else
return 1000;
}
if(dp[i][amount]!=-1)
{
return dp[i][amount];
}
if(amount>=coins[i])
{
int niye=1+coin_change(i,amount-coins[i]);
int naniye=coin_change(i+1,amount);
return min(niye,naniye);
}
else
{
return coin_change(i+1,amount);
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>coins[i];
}
cin>>amount;
for(int i=0;i<=n;i++)
{
for(int j=0;j<=amount;j++)
{
dp[i][j]=-1;
}
}
int min_coins=coin_change(0,amount);
if(min_coins>=1000)
cout<<"Not Possible "<<endl;
else
cout<<min_coins<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGNvaW5zWzEwMF07CmludCBhbW91bnQsbjsKaW50IGRwWzEwMF1bMTAwMF07CmludCBjb2luX2NoYW5nZShpbnQgaSxpbnQgYW1vdW50KQp7CmlmKGk9PW4pCnsKaWYoYW1vdW50PT0wKQpyZXR1cm4gMDsKZWxzZQpyZXR1cm4gMTAwMDsKfQppZihkcFtpXVthbW91bnRdIT0tMSkKewpyZXR1cm4gZHBbaV1bYW1vdW50XTsKfQppZihhbW91bnQ+PWNvaW5zW2ldKQp7CmludCBuaXllPTErY29pbl9jaGFuZ2UoaSxhbW91bnQtY29pbnNbaV0pOwppbnQgbmFuaXllPWNvaW5fY2hhbmdlKGkrMSxhbW91bnQpOwpyZXR1cm4gbWluKG5peWUsbmFuaXllKTsKfQplbHNlCnsKcmV0dXJuIGNvaW5fY2hhbmdlKGkrMSxhbW91bnQpOwp9Cn0KaW50IG1haW4oKQp7CmNpbj4+bjsKZm9yKGludCBpPTA7aTxuO2krKykKewpjaW4+PmNvaW5zW2ldOwp9CmNpbj4+YW1vdW50Owpmb3IoaW50IGk9MDtpPD1uO2krKykKewpmb3IoaW50IGo9MDtqPD1hbW91bnQ7aisrKQp7CmRwW2ldW2pdPS0xOwp9Cn0KaW50IG1pbl9jb2lucz1jb2luX2NoYW5nZSgwLGFtb3VudCk7CmlmKG1pbl9jb2lucz49MTAwMCkKY291dDw8Ik5vdCBQb3NzaWJsZSAiPDxlbmRsOwplbHNlCmNvdXQ8PG1pbl9jb2luczw8ZW5kbDsKfQ==