#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100005],sum=0;
bool check(long long x)
{
long long tempx=x,cnt=1;
for(int i=1;i<=n;i++)
{
if(x>=a[i])
x-=a[i];
else
{
x=tempx;
cnt++;
x-=a[i];
}
}
if(cnt<=m)
return true;
else
return false;
}
int main()
{
long long maxx=0,sum=0,mid,l,r;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
if(a[i>maxx])//这能过四个点???意外发现
maxx=a[i];
}
l=maxx,r=sum;
while(l<r)
{
mid=(l+r)/2;
if(check(mid))
r=mid;
else
l=mid+1;
}
cout<<l;
return 0;
}