//Mihai Priboi
#include <stdio.h>
#include <stdlib.h>
int v[16000], n;
int cautbin( int x ) {
int r, pas;
pas = 1 << 13;
r = 0;
while( pas ) {
if( transporturi(r + pas) > x )
r += pas;
pas /= 2;
}
return r;
}
int transporturi( int vol ) {
int k, vcur, i;
k = 1;
vcur = 0;
for( i = 0; i < n; i++ ) {
if( vcur + v[i] <= vol )
vcur += v[i];
else {
k++;
vcur = v[i];
}
}
return k;
}
int main() {
FILE *fin, *fout;
int k, i;
fin = fopen( "transport.in", "r" );
fscanf( fin, "%d%d", &n, &k );
for( i = 0; i < n; i++ )
fscanf( fin, "%d", &v[i] );
fclose( fin );
fout = fopen( "transport.out", "w" );
fprintf( fout, "%d", cautbin(k) + 1 );
fclose( fout );
return 0;
}