#include<bits/stdc++.h>
using namespace std;
const int Maxx=1e5+5;
int a[Maxx];
int n,m;
bool check(int mid){
int con=1;
int last=mid;
for(int i=0;i<n;i++){
if(last-a[i]>=0){
last=last-a[i];
}else{
con++;
last=mid-a[i];
}
}
return (con<=m);
}
int main(){
int left=-1,right=0;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
left=max(left,a[i]);
right+=a[i];
}
right++;
int res=-1;
while(left<right){
int mid=(left+right)/2;
if(check(mid)==true){
res=mid;
right=mid;
}else{
left=mid+1;
}
}
cout<<res;
return 0;
}