//高度越高,得到的树枝和越小,二分。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int n=1e6+11;
int a,b,c[n],d;
int check(int x)
{
int v=0;
for(int i=1;i<=a;i++)
{
v+=max(c[i]-x,(int)0);
}
if(v>=b)
{
return 1;
}
else
{
return 0;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>a>>b;
int r=0,l=0;
for(int i=1;i<=a;i++)
{
cin>>c[i];
r=max(r,c[i]);
}
int an=0;
while(r>=l)
{
int mid=(l+r)/2;
if(check(mid))
{
l=mid+1;
an=mid;
}
else
{
r=mid-1;
}
}
cout<<an<<endl;
return 0;
}