#include <iostream>
using namespace std;
#define int long long
int shu[1000010];
int ans=0,n,m,maxtree=-1,mintree=11451419198,temp=0,temp1;
void check(int l,int r){
temp=0;
if(l==r){
return;
}
int mid=(l+r)/2;
for(int i=1;i<=n;i++){
if(shu[i]>mid){
temp+=shu[i]-mid;
}
}
if(temp-m>=0){
ans=mid;
}
if(temp-m<0){
check(l,mid);
}else{
check(mid+1,r);
}
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>shu[i];
if(shu[i]>maxtree){
maxtree=shu[i];
}
if(shu[i]<mintree){
mintree=shu[i];
}
}
check(maxtree,mintree);
cout<<ans;
return 0;
}