#include <stdio.h>
#include <stdlib.h>
int v[16001];
int main(){
FILE *fin,*fout;
int n,k,maxx,d,s,i,cnt,mij,dr,st;
fin=fopen("transport.in", "r");
fout=fopen("transport.out", "w");
fscanf(fin, "%d%d", &n,&k);
s=0;
maxx=0;
for(i=0;i<n;i++){
fscanf(fin, "%d", &v[i]);
if(v[i]>maxx)
maxx=v[i];
s+=v[i];
}
d=(s+k-1)/k;
if(maxx>d)
d=maxx;
st=d-1;
dr=d*2;
while(dr-st>1){
mij=(dr+st)/2;
i=0;
cnt=0;
while(i<n){
s=0;
while(s<mij){
s=s+v[i];
i++;
}
if(s>mij)
i--;
cnt++;
}
if(cnt>k)
st=mij;
else
dr=mij;
}
fclose(fin);
fprintf(fout, "%d\n", dr);
fclose(fout);
return 0;
}