#include<bits/stdc++.h>
using namespace std;
int a[1000000], n, m, ans = -1, max1 = 0;
// 计算高度为h时能砍下的木材总量
int sa(int h) {
int s = 0;
for (int i = 0; i < n; i++) {
if (a[i] > h) {
s += a[i] - h;
}
}
return s;
}
// 二分查找最大高度
void ss(int l, int r) {
if (l <= r) {
int mid = (l + r) / 2;
int sum = sa(mid);
if (sum >= m) {
// 当前高度满足条件,尝试更高的高度
ans = mid;
ss(mid + 1, r);
} else {
// 当前高度不满足,尝试更低的高度
ss(l, mid - 1);
}
}
}
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> a[i];
if (a[i] > max1) {
max1 = a[i];
}
}
ss(0, max1);
cout << ans;
return 0;
}
/**************************************************************
Problem: 1908
User: zzz
Language: C++
Result: Wrong Answer
****************************************************************/