#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ss stable_sort
#define ll long long
int main() {
cin.tie(0)->sync_with_stdio(0);
int n, m;
cin >> n >> m;
vector<int> v;
for (int i = 0,x; i < n; i++) {
cin >> x;
v.pb(x);
} //입력
int Max = *max_element(v.begin(), v.end()); //최대길이 떡이 end
int start = 1;
int end = Max;
int ans=0;
while (start <= end) {
ll sum = 0; //잘린 떡 저장용
int mid = (start + end) / 2; //이분탐색용 미드
for (int i = 0; i < n; i++) {
if (v[i]>mid) {
sum += v[i] -mid; //더 길면 자르고 sum에 추가
}
}
if (sum < m) {
end = mid - 1; //떡의 길이가 m에 못미치면 자르는 길이를 줄임
}
else {
ans = mid;
start = mid + 1;
} //반대
}
cout << ans;
return 0;
}