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