#include #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; using ll = long long; int main() { int n, s; cin >> n >> s; vector a(n); rep(i, n) cin >> a[i]; sort(a.begin(), a.end(), greater<>()); int ac = a[0], wa = 0; while (ac-wa > 1) { int wj = (ac+wa)/2; auto ok = [&]{ int k = lower_bound(a.begin(), a.end(), wj, greater<>()) - a.begin(); if (k == 0) return true; ll sum = 0; for (int j = 0; j < k; j += wj) { sum += a[j]; if (sum >= s) return false; } return true; }(); (ok ? ac : wa) = wj; } cout << ac << '\n'; return 0; }