#include<bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;
#define ll long long
#define vll vector<ll>
#define all(x) x.begin(),x.end()
#define fo(i,a,b) for(ll i=a;i<=b;++i)
#define fast ios::sync_with_stdio(0);cin.tie(0);
const ll INF=1e18,MOD=1e9+7;
ll n,k,m;
void input(){
cin>>n>>m>>k;
vll a(n);
fo(i,0,n-1)cin>>a[i];
sort(all(a));
vll pre(n+1,0);
fo(i,0,n-1)pre[i+1]=pre[i]+a[i];
auto mua=[&](ll r)->bool{
ll x=min(r,k);
ll gia=pre[r-x]+(pre[r]-pre[r-x])/2;
return gia<=m;
};
ll trai=0,phai=n,ans=0;
while(trai<=phai){
ll mid=(trai+phai)/2;
if(mua(mid))ans=mid,trai=mid+1;
else phai=mid-1;
}
cout<<ans;
}
int main(){
fast
input();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpICAKI3ByYWdtYSBHQ0MgdGFyZ2V0KCJhdngyLGJtaSxibWkyLHBvcGNudCxsemNudCIpICAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdmxsIHZlY3RvcjxsbD4KI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSBmbyhpLGEsYikgZm9yKGxsIGk9YTtpPD1iOysraSkKI2RlZmluZSBmYXN0IGlvczo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Cgpjb25zdCBsbCBJTkY9MWUxOCxNT0Q9MWU5Kzc7CgpsbCBuLGssbTsKCnZvaWQgaW5wdXQoKXsKICAgIGNpbj4+bj4+bT4+azsKICAgIHZsbCBhKG4pOwogICAgZm8oaSwwLG4tMSljaW4+PmFbaV07CiAgICBzb3J0KGFsbChhKSk7CiAgICB2bGwgcHJlKG4rMSwwKTsKICAgIGZvKGksMCxuLTEpcHJlW2krMV09cHJlW2ldK2FbaV07CgogICAgYXV0byBtdWE9WyZdKGxsIHIpLT5ib29sewogICAgICAgIGxsIHg9bWluKHIsayk7IAogICAgICAgIGxsIGdpYT1wcmVbci14XSsocHJlW3JdLXByZVtyLXhdKS8yOwogICAgICAgIHJldHVybiBnaWE8PW07CiAgICB9OwoKICAgIGxsIHRyYWk9MCxwaGFpPW4sYW5zPTA7CiAgICB3aGlsZSh0cmFpPD1waGFpKXsKICAgICAgICBsbCBtaWQ9KHRyYWkrcGhhaSkvMjsKICAgICAgICBpZihtdWEobWlkKSlhbnM9bWlkLHRyYWk9bWlkKzE7CiAgICAgICAgZWxzZSBwaGFpPW1pZC0xOwogICAgfQogICAgY291dDw8YW5zOwp9CgppbnQgbWFpbigpewogICAgZmFzdAogICAgaW5wdXQoKTsKfQo=