#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, v[16009], ans, maxim, sum;
int main(){
int i, dr, st, m, pm = 25000000;
f>>n>>k;
for(i = 0; i < n; i++){
f>>v[i];
sum = sum + v[i];
if(v[i] > maxim){
maxim = v[i];
}
}
st = maxim;
dr = sum;
long long s, tr;
while(st <= dr) {
m = (st + dr) / 2;
s = 0;
tr = 0;
for(i = 0; i < n; i++){
s = s + v[i];
if(s > m){
tr++;
s = v[i];
}
}
if(s != 0){
tr++;
}
if(tr <= k){
if(m < pm){
pm = m;
}
dr = m - 1;
}else st = m + 1;
}
g<<pm;
return 0;
}