typedef unsigned long long ll;
ll n,m,a[1000005],ans,sum,l=0,r;
inline int read() //快读
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
bool find(long long x){
long long sum=0;
for(int i=1;i<=n;i++){
if(a[i]>x){
sum+=a[i]-x;
}
}
return sum>=m;
}
int main(){
n=read();m=read();
for(int i=1;i<=n;i++){
a[i]=read();
r=max(l,a[i]);
}
while(l<=r){
ll mid=l+r>>1;
for(int i=1;i<=n;i++){
if(find(mid)){
ans=mid;
l=mid+1;
}
else {
r=mid-1;
}
}
}
cout<<ans;
return 0;
}```