#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16001];
int main()
{
int st,dr,max=0,min=-1,n,nr,k,s,pp=0,ans,mans;
in>>n>>k;
for ( int i = 1 ; i <= n ; i++ ){
in>>v[i];
if ( min < v[i] )
min = v[i];
max += v[i];
}
st = min;
dr = max;
while ( st != dr ){
s = ( st + dr ) / 2;
ans = s;
int i,ck = k;
for ( i = 1 ; i <= n && ck >= 0 && v[i] != 0 ; ck-- , s = ans ){
while ( s - v[i] >= 0 && v[i] != 0 ){
s -= v[i];
i++;
}
}
if ( i - 1 < n ){
pp = 0;
}
else
pp = 1;
if ( i - 1 == n && ck == 0 )
mans = ans;
if ( pp == 0 ){
st = ans;
}
else
dr = ans;
}
out<<mans;
return 0;
}