#include using namespace std; const int c=200005, koz=50; long long n, k, t[c], sum; long double opt=1e18; int hit, cnt; vector > sz; map m; void proba(int ert) { int seb=k-ert; if (ert<=0 || seb<=0) return; long long s=0; for (auto x:sz) { s+=(x.first+ert-1)/ert*x.second; if (s>opt*(k-ert)) { return; } } long double s2=s; opt=s2/(k-ert); hit=ert, cnt=seb; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> k; for (int i=1; i<=n; i++) { cin >> t[i]; sum+=t[i]; m[t[i]]++; } for (auto x:m) { sz.push_back({x.first, x.second}); } reverse(sz.begin(), sz.end()); for (int i=k/2-koz; i<=k/2+koz; i+=200) { proba(i); } for (int i=1; i<=k/2-koz; i+=200) { proba(i); } for (int i=k/2+koz; i<=k*2/3+5; i++) { proba(i); } for (int i=hit-200; i<=hit+200; i++) { proba(i); } cout << hit << " " << cnt << "\n"; return 0; }