#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("transport.in") ;
ofstream g ("transport.out") ;
int v [ 16001 ], n, k, mx, s;
void citire()
{
f>>n>>k;
for (int i=1; i<=n; i++ )
{
f>>v[i];
s+=v[i] ;
if (v[i]>mx)
mx=v[i];
}
}
void cautabin()
{
int nr=0, val=0, st=mx, dr=s, snr=0, mid;
while (st<=dr)
{
nr=1 ;
snr=0 ;
mid=(st+dr)/2;
for (int i=1; i<=n; i++)
if (v[i]+snr<=mid)
snr+=v[i];
else
nr++, snr=v[i] ;
if(nr<=k)
dr=mid-1, val=mid ;
else
st=mid+1 ;
}
g<<val ;
}
int main()
{
citire();
cautabin();
}