#include <fstream>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int dr,st,sum,s=0,nr=0,max=0,n,v[16100],med,i,k;
cin>>n>>k;
for( i=1;i<=n;i++)
{
cin>>v[i];
s=s+v[i];
if(v[i]>max)
max=v[i];
}
st=max;
dr=s;
while(st<=dr)
{
med=(st+dr)/2;
s=0;
nr=0;
for(i=1;i<=n+1;++i)
{
if(s+v[i]<=med && i!=n+1)
{
s=s+v[i];
}
else
{
nr++;
s=0;
if(i!=n+1)
i--;
}
}
if(nr<=k)
{
sum=med;
dr=med-1;
}
else
st=med+1;
}
cout<<sum;
return 0;
}