#include <bits/stdc++.h>
using namespace std;
const int MAXP2 = ( 1 << 27 ) , MAXN = 16e3;
int vol[MAXN];
int n , k;
bool check ( int cap ) {
int i , sum , nrt;
sum = 0;
nrt = 1;
for ( i = 0 ; i < n ; i++ ) {
if ( vol[i] > cap )
return 0;
if ( sum + vol[i] > cap ) {
sum = vol[i];
nrt++;
} else
sum += vol[i];
}
return nrt <= k;
}
int cautbin () {
int ans , i;
ans = 0;
for ( i = MAXP2 ; i > 0 ; i >>= 1 )
if ( check ( ans + i ) == 0 )
ans += i;
return ans + 1;
}
int main () {
ifstream fin ( "transport.in" );
ofstream fout ( "transport.out" );
int i;
fin >> n >> k;
for ( i = 0 ; i < n ; i++ )
fin >> vol[i];
fout << cautbin () << '\n';
return 0;
}