#include <bits/stdc++.h>
using namespace std;
const int NMAX = 16005;
const int SM = 1<<25;
int n, k;
int v[NMAX];
bool check(int cap) {
int acc, c;
acc = 0;
c = 1;
for(int i=0; i<n; ++i) {
if(v[i]>cap)
return false;
if(acc+v[i]>cap) {
acc = 0;
++c;
}
acc += v[i];
}
return c<=k;
}
int main(void) {
FILE *fi = fopen("transport.in", "r");
FILE *fo = fopen("transport.out", "w");
int ans;
fscanf(fi,"%d%d",&n,&k);
for(int i=0; i<n; ++i)
fscanf(fi,"%d",&v[i]);
ans = 0;
for(int m=SM; m; m>>=1)
if(!check(ans|m))
ans|=m;
fprintf(fo,"%d\n",ans+1);
fclose(fi);
fclose(fo);
return 0;
}