#include <cstdio>
int N,M;
int A[100005];
int fd(int l){
int cnt=0,all=1;
for(int i=0;i<N;i++){
if(cnt+A[i]>l){
all++;
cnt=0;
}
cnt+=A[i];
}
if(all<M) return 1;
if(all==M) return 2;
if(all>M) return 3;
}
void bs(){
int s=0,e=1000000009;
int mid;
while(1){
mid=(s+e)/2;
int d=fd(mid);
if(d==2 && fd(mid-1)==3){
printf("%d",mid);
return;
}
if(d==3){
s=mid;
continue;
}
e=mid;
}
}
int main(){
scanf("%d %d",&N,&M);
for(int i=0;i<N;i++) scanf("%d",&A[i]);
bs();
return 0;
}