using namespace std;
long long N,M,tree[1000001],maxx=0;
int sum(int h){
long long s=0;
for(int i=1;i<=N;i++)
if(tree[i]>h)
s=s+tree[i]-h;
return s;
}
int ef(){
long long l=0,r=maxx,mid;
while(l<r){
mid=l+(r-l)/2;
long long h=sum(mid);
if(h==M)
break;
else if(h>M)
l=mid+1;
else
r=mid-1;
}
return mid;
}
int main(){
cin>>N>>M;
for(int i=1;i<=N;i++){
cin>>tree[i];
maxx=max(maxx,tree[i]);
}
cout<<ef();
return 0;
}