#include <iostream>
using namespace std;
int tab [1000000];
bool czyok (int d, int n, int dni){
int iledni=1;
int suma=0;
for(int i=0;i<n;i++){
if (tab[i]>d)return false;
else {
if ((suma+tab[i])<=d){suma+=tab[i];}
else {suma=0; suma+=tab[i]; iledni++;}
}
if (iledni>dni) return false;
}
return true;
}
int main() {
int n, k, maxx=0;
cin>> n>>k;
for (int i =0;i<n;i++){
cin>>tab[i];
maxx+=tab[i];
}
int kon, pocz, sr;
kon = maxx;
pocz = 0;
while ((kon-pocz)>1){
sr=(kon+pocz)/2;
if (czyok(sr,n, k)==true){
kon=sr;
}else pocz=sr;
}
cout<<kon;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgdGFiIFsxMDAwMDAwXTsKCmJvb2wgY3p5b2sgKGludCBkLCBpbnQgbiwgaW50IGRuaSl7CglpbnQgaWxlZG5pPTE7CglpbnQgc3VtYT0wOwoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJaWYgKHRhYltpXT5kKXJldHVybiBmYWxzZTsKCQllbHNlIHsKCQkJaWYgKChzdW1hK3RhYltpXSk8PWQpe3N1bWErPXRhYltpXTt9CgkJCWVsc2Uge3N1bWE9MDsgc3VtYSs9dGFiW2ldOyBpbGVkbmkrKzt9CgkJCX0KCQlpZiAoaWxlZG5pPmRuaSkgcmV0dXJuIGZhbHNlOwoJCX0KCQlyZXR1cm4gdHJ1ZTsKCX0KCmludCBtYWluKCkgewoJaW50IG4sIGssIG1heHg9MDsKCWNpbj4+IG4+Pms7Cglmb3IgKGludCBpID0wO2k8bjtpKyspewoJCWNpbj4+dGFiW2ldOwoJCW1heHgrPXRhYltpXTsKCX0KCWludCBrb24sIHBvY3osIHNyOwoJa29uID0gbWF4eDsKCXBvY3ogPSAwOwoJd2hpbGUgKChrb24tcG9jeik+MSl7CgkJc3I9KGtvbitwb2N6KS8yOwoJCWlmIChjenlvayhzcixuLCBrKT09dHJ1ZSl7CgkJCWtvbj1zcjsKCQl9ZWxzZSBwb2N6PXNyOwoJfSAKCWNvdXQ8PGtvbjsKCQoJCgkKCXJldHVybiAwOwp9