#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N;
int K;
int ans = 0;
vector<int> levels;
cin >> N >> K;
int tmp;
for (int i = 0; i < N; i++) {
cin >> tmp;
levels.push_back(tmp);
}
sort(levels.begin(), levels.end());
int low = levels[0], high = levels[N - 1] + K;
while (low <= high) {
int mid = (low + high) / 2;
long long need = 0;
for (int i = 0; i < N; i++) {
if (levels[i] < mid) need += (mid - levels[i]);
else break;
}
if (need > K) high = mid - 1;
else {
ans = max(ans, mid);
low = mid + 1;
}
}
cout << ans;
return 0;
}