#include<bits/stdc++.h>
using namespace std;
int ASDFGHJKL;
vector<long double>df;
vector<int>a;
int one = 0;
int n, k;
template<typename Tp_ = int>
inline Tp_ read(Tp_& a = ASDFGHJKL) ;
enum struct ret {
more,
less,
ok
};
struct R {
long double ex;
ret v;
};
inline R check(int l) {
long double OT = one * l;
R ans;
if (OT >= k * 2 ) {
ans.v = ret::more ;
ans.ex = OT - 2 * k;
} else if (OT < k) {
ans.v = ret::less;
ans.ex = k - OT;
} else {
ans.v = ret::ok;
ans.ex = OT - k;
}
}
inline int solve(int l, int r ) {
int mid = (l + r) >> 1 ;
R a = check(mid);
if (a.v == ret::more) r = mid - 1;
else if (a.v == ret::less) l = mid ;
else return l ;
return solve(l,r);
}
int main() {
ios::sync_with_stdio(false);
cin >> n >> k;
long long al = 0;
for (int i = 0 ; i < n ; ++i) {
a.push_back(read());
al += ASDFGHJKL;
}
long double O = al * 1L / k;
for (int i = 0; i < n ; ++i) {
df.push_back(a[i] / O);
}
for (int i = 0 ; i < n ; ++i) {
one += floor(df[i]);
}
cout << solve(1, ceil(al * 1L / one));
return 0;
}
template<typename Tp_>
inline Tp_ read(Tp_& a) {
cin >> a;
return a;
}