#include #include #include int main() { using namespace std; int n, s; cin >> n >> s; long long tot = 0; vector a(n); for (auto &e : a) { cin >> e; tot += e; } sort(a.rbegin(), a.rend()); auto pred = [&](long long m) -> bool { vector large; int res = 0; for (auto e : a) { if (e <= m) { res++; } else { if (large.size() % m == 0) { res += e + 1; } large.push_back(e); } } return res <= s; }; long long ok = tot, ng = 0; while (ok - ng > 1) { long long mid = (ok + ng) / 2; if (pred(mid)) { ok = mid; } else { ng = mid; } } cout << ok << endl; }