#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
const int NN = 1e5 + 10;
int arr[NN];
int N,M;
long long sum = 0;
long long arrSum = 0;
bool check(int middle){
sum = 0;
int cnt = 0;
for(int i = 1;i <= N;++i){
if(arr[i]+sum <= middle){
sum+=arr[i];
}else{
sum = arr[i];
cnt++;
}
}
if(cnt>M)return false;
else return true;
}
int main(){
int left = 0;
scanf("%d %d",&N,&M);
for(int i = 1;i <= N;++i){
scanf("%d",&arr[i]);
arrSum += arr[i];
left = max(left,arr[i]);
}
int right = arrSum;
while(left + 1 < right){
int middle = (right + left)/2;
if(check(middle)){
right = middle;
}else left = middle;
}
cout<<right<<endl;
return 0;
}