#include <stdio.h>
#define MAX_N 16000
#define MAX_VOL 16000
int vol[MAX_N];
int main() {
FILE *fin, *fout;
int n, k, maxVol, sumaVol, s, t, st, dr, mij, i;
fin = fopen( "transport.in", "r" );
fscanf( fin, "%d%d", &n, &k );
maxVol = sumaVol = 0;
for ( i = 0; i < n; i++ ) {
fscanf( fin, "%d", &vol[i] );
if ( vol[i] > maxVol )
maxVol = vol[i];
sumaVol += vol[i];
}
fclose( fin );
st = maxVol - 1;
dr = sumaVol;
while ( dr - st > 1 ) {
mij = (st + dr) / 2;
t = 1;
s = 0;
for ( i = 0; i < n; i++ ) {
if ( s + vol[i] > mij ) {
s = 0;
t++;
}
s += vol[i];
}
if ( t > k )
st = mij;
else
dr = mij;
}
fout = fopen( "transport.out", "w" );
fprintf( fout, "%d", dr );
fclose( fout );
return 0;
}