#include <bits/stdc++.h>
#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
#define lg2(n) (63-__builtin_clzll(n))
#define mask(n) (1 << (n))
#define TASK "TASK"
#define openfile(); if( fopen(TASK".inp", "r")){freopen(TASK".inp", "r", stdin);freopen(TASK".out", "w", stdout);}
#define fi first
#define se second
#define FOR(i, l, r, k) for( int i = l; i <= r; i += k)
#define FOD(i, r, l, k) for( int i = r; i >= l; i -= k)
#define mii map<int,int>
#define umi unordered_map<int, int>
#define pii pair<int,int>
#define vi vector<int>
using namespace std;
const int oo = 1e18;
const int mod = 1e9 + 7;
const int nmax = 1e6 + 8;
const int base = 31;
int n, res, a[nmax], pf[nmax], k;
int calc(int l, int r){
if(l > r) return 0;
return pf[r] - pf[l - 1];
}
bool check(int val){
int s = 0;
if(pf[n] - val <= k) {
// cout << pf[n] << ' ' << val << endl;
return true;
}
for(int i = n; i >= n - val + 1; --i){
int j = n - i + 1;
int tmp = val - j;
int cur = max(0LL, a[1] - tmp);
if(cur * (j + 1) + calc(2, i - 1) <= k){
// cout << j << ' ' << val << ' ' << cur * (j + 1) + calc(2, i - 1) << endl;
return 1;
}
}
return false;
}
main(){
fast;
openfile();
cin >> n >> k;
for(int i = 1; i <= n; ++i) {
cin >> a[i];
}
sort(a + 1,a + n + 1);
for(int i = 1; i <= n; ++i) {
pf[i] = pf[i - 1] + a[i];
}
int l = 0, r = a[1] + n;
while(l <= r){
int mid = (l + r) >> 1;
if(check(mid)){
r = mid - 1;
}
else l = mid + 1;
}
cout << l;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGZhc3QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUobnVsbHB0cik7IGNvdXQudGllKG51bGxwdHIpOwojZGVmaW5lIGxnMihuKSAoNjMtX19idWlsdGluX2NsemxsKG4pKQojZGVmaW5lIG1hc2sobikgKDEgPDwgKG4pKQojZGVmaW5lIFRBU0sgIlRBU0siCiNkZWZpbmUgb3BlbmZpbGUoKTsgIGlmKCBmb3BlbihUQVNLIi5pbnAiLCAiciIpKXtmcmVvcGVuKFRBU0siLmlucCIsICJyIiwgc3RkaW4pO2ZyZW9wZW4oVEFTSyIub3V0IiwgInciLCBzdGRvdXQpO30KCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBGT1IoaSwgbCwgciwgaykgZm9yKCBpbnQgaSA9IGw7IGkgPD0gcjsgaSArPSBrKQojZGVmaW5lIEZPRChpLCByLCBsLCBrKSBmb3IoIGludCBpID0gcjsgaSA+PSBsOyBpIC09IGspCgojZGVmaW5lIG1paSBtYXA8aW50LGludD4KI2RlZmluZSB1bWkgdW5vcmRlcmVkX21hcDxpbnQsIGludD4KI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IG9vID0gMWUxODsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBubWF4ID0gMWU2ICsgODsKY29uc3QgaW50IGJhc2UgPSAzMTsKCmludCBuLCByZXMsIGFbbm1heF0sIHBmW25tYXhdLCBrOwoKaW50IGNhbGMoaW50IGwsIGludCByKXsKICAgIGlmKGwgPiByKSByZXR1cm4gMDsKICAgIHJldHVybiBwZltyXSAtIHBmW2wgLSAxXTsKfQoKYm9vbCBjaGVjayhpbnQgdmFsKXsKICAgIGludCBzID0gMDsKICAgIGlmKHBmW25dIC0gdmFsIDw9IGspIHsKLy8gICAgICAgIGNvdXQgPDwgcGZbbl0gPDwgJyAnIDw8IHZhbCA8PCBlbmRsOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgZm9yKGludCBpID0gbjsgaSA+PSBuIC0gdmFsICsgMTsgLS1pKXsKICAgICAgICBpbnQgaiA9IG4gLSBpICsgMTsKICAgICAgICBpbnQgdG1wID0gdmFsIC0gajsKICAgICAgICBpbnQgY3VyID0gbWF4KDBMTCwgYVsxXSAtIHRtcCk7CiAgICAgICAgaWYoY3VyICogKGogKyAxKSArIGNhbGMoMiwgaSAtIDEpIDw9IGspewovLyAgICAgICAgICAgIGNvdXQgPDwgaiA8PCAnICcgPDwgdmFsIDw8ICcgJyA8PCBjdXIgKiAoaiArIDEpICsgY2FsYygyLCBpIC0gMSkgPDwgZW5kbDsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CgptYWluKCl7CiAgICBmYXN0OwogICAgb3BlbmZpbGUoKTsKICAgIGNpbiA+PiBuID4+IGs7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgc29ydChhICsgMSxhICsgbiArIDEpOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBwZltpXSA9IHBmW2kgLSAxXSArIGFbaV07CiAgICB9CiAgICBpbnQgbCA9IDAsIHIgPSBhWzFdICsgbjsKICAgIHdoaWxlKGwgPD0gcil7CiAgICAgICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgICAgICBpZihjaGVjayhtaWQpKXsKICAgICAgICAgICAgciA9IG1pZCAtIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgbCA9IG1pZCArIDE7CiAgICB9CiAgICBjb3V0IDw8IGw7Cn0K