#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int n,m;
const int maxn = 100005;
int a[maxn];
int ok(long long mid)
{
long long dis=0;
int num=0;
for(int i=0;i<n;i++)
{
if(a[i]>mid) return 0;
if(dis+a[i]<=mid) dis+=a[i];
else {
num++;
dis=a[i];
}
}
if(dis>0) num++;
if(num>m) return 0;
else return 1;
}
int main()
{
scanf("%d %d",&n,&m);
long long sum=0;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
long long l=0,r=sum,res=0;
while(l<=r)
{
long long mid=l+(r-l)/2;
if(!ok(mid)) l=mid+1;
else {
res=mid;
r=mid-1;
}
}
printf("%I64d\n",res);
return 0;
}