#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6+10;
int tree[N],d[N];
int n,m;
int sum(int l,int r,int a[])
{
int ans = 0;
for (int j = l; j <= r; j++) ans += a[j];
return ans;
}
int fam(int n,int m)
{
int res = 0,i = 0;
for(; res + d[i] * i <= m; i++)
{
res += d[i] * i;
if ( res == m) break;
}
if (res == m)
{
return sum(0,i,d);
}
else if (res < m)
{
int x = (m-res) % i;
if( x == 0) return sum(0,i-1,d)+(m-res)/i;
else return sum(0,i-1,d)+1;
}
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++) scanf("%d",&tree[i]);
sort(tree,tree+n);
reverse(tree,tree+n);
d[0] = 0;
for (int i = 1; i < n; i++) d[i] = tree[i-1]-tree[i];
cout << tree[0]-fam(n,m);
return 0;
}