#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e6 + 10;
long long a[N], s[N];
long long n, m;
bool check(int mid)
{
long long res = 0, j = 1;
while(a[j] - mid <= 0 && j <= n) ++j;
if(j <= n) res = s[n] - s[j-1] - mid * (n - j + 1);
if(res <= m) return true;
return false;
}
long long bsearch1()
{
long long l = 0, r = 1e6;
while(l < r)
{
int mid = l + r >> 1;
if(check(mid)) r = mid;
else
l = mid + 1;
}
return l;
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; ++i) scanf("%lld", &a[i]);
sort(a+1, a+n+1);
for(int i = 1; i <= n; ++i) s[i] = s[i-1] + a[i];
long long res = bsearch1();
printf("%d",res);
return 0;
}