#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<long long> a;
vector<long long> b;
bool check(long long T) {
for (int i = 1; i <= n; i++) {
b[i] = a[i];
}
int last = n;
while (last > 0 && b[last] == 0) {
last--;
}
if (last == 0){
return true;
}
for (int i = 1; i <= m; i++) {
if (T <= last){
return false;
}
long long rem = T - last;
while (last > 0 && rem > 0) {
if (b[last] <= rem) {
rem -= b[last];
b[last] = 0;
last--;
while (last > 0 && b[last] == 0) last--;
} else {
b[last] -= rem;
rem = 0;
}
}
if (last == 0){
return true;
}
}
return last == 0;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
freopen("wca.inp", "r", stdin);
freopen("wca.out", "w", stdout);
cin>>n>>m;
a.resize(n + 1);
b.resize(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
long long low = 0;
long long high = 2000000000000000LL;
long long ans = high;
while (low <= high) {
long long mid = low + (high - low) / 2;
if (check(mid)) {
ans = mid;
high = mid - 1;
} else {
low = mid + 1;
}
}
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBtOwp2ZWN0b3I8bG9uZyBsb25nPiBhOwp2ZWN0b3I8bG9uZyBsb25nPiBiOwpib29sIGNoZWNrKGxvbmcgbG9uZyBUKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBiW2ldID0gYVtpXTsKICAgIH0KICAgIGludCBsYXN0ID0gbjsKICAgIHdoaWxlIChsYXN0ID4gMCAmJiBiW2xhc3RdID09IDApIHsKICAgICAgICBsYXN0LS07CiAgICB9CiAgICBpZiAobGFzdCA9PSAwKXsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewogICAgICAgIGlmIChUIDw9IGxhc3QpewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGxvbmcgbG9uZyByZW0gPSBUIC0gbGFzdDsKICAgICAgICB3aGlsZSAobGFzdCA+IDAgJiYgcmVtID4gMCkgewogICAgICAgICAgICBpZiAoYltsYXN0XSA8PSByZW0pIHsKICAgICAgICAgICAgICAgIHJlbSAtPSBiW2xhc3RdOwogICAgICAgICAgICAgICAgYltsYXN0XSA9IDA7CiAgICAgICAgICAgICAgICBsYXN0LS07CiAgICAgICAgICAgICAgICB3aGlsZSAobGFzdCA+IDAgJiYgYltsYXN0XSA9PSAwKSBsYXN0LS07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBiW2xhc3RdIC09IHJlbTsKICAgICAgICAgICAgICAgIHJlbSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGxhc3QgPT0gMCl7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBsYXN0ID09IDA7Cn0KaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBmcmVvcGVuKCJ3Y2EuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJ3Y2Eub3V0IiwgInciLCBzdGRvdXQpOwogICAgY2luPj5uPj5tOwogICAgYS5yZXNpemUobiArIDEpOwogICAgYi5yZXNpemUobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9CiAgICBsb25nIGxvbmcgbG93ID0gMDsKICAgIGxvbmcgbG9uZyBoaWdoID0gMjAwMDAwMDAwMDAwMDAwMExMOwogICAgbG9uZyBsb25nIGFucyA9IGhpZ2g7CiAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHsKICAgICAgICBsb25nIGxvbmcgbWlkID0gbG93ICsgKGhpZ2ggLSBsb3cpIC8gMjsKICAgICAgICBpZiAoY2hlY2sobWlkKSkgewogICAgICAgICAgICBhbnMgPSBtaWQ7CiAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBhbnMgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9Cg==