#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
int vis[N],a[N];
priority_queue<int,vector<int>,greater<int> >q;
int main()
{
int n,maxx=-INT_MAX;
cin>>n;
for(int i=1,x;i<=n;i++)
{
cin>>x,q.push(x);
a[i]=x;
}
int m;
cin>>m;
for(int i=1;i<=n;i++)
{
if(a[i]<m)
maxx=max(maxx,a[i]);
}
int sum=0,ans=0;
m-=maxx;
vis[maxx]=true;
while(!q.empty())
{
int now=q.top();
if(now==maxx&&vis[now]==true)
{
vis[maxx]=false;
q.pop();
continue;
}
if(sum+now<=maxx)
{
ans++;
q.pop();
}
else
break;
}
cout<<ans<<endl;
}