#include <stdio.h>
#include <string.h>
 
#define DEF_ELEM_MAX 100000
 
typedef long long llong;
 
int W[DEF_ELEM_MAX];
    int N;
    int K;
/////////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////////
// ??????§????????? P ??? k ???°??????????????????§?????????????????????????????????
int check(int P)
{
    int i = 0;
    int j;
    llong s;
 
    for ( j = 0; j < K; j++ ) {
        s = 0;
        while( s + W[i] <= P ) {
            s += W[i];
            i++;
            if ( i == N ) return N;
        }
    }
    return i;
}
 
/////////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////////
int solve()
{
    llong v;
    llong left = 0;
    llong right = 100000 * 10000; // ???????????????° ?? 1?????????????????????§??????
    llong mid;
 
    while ( right - left > 1 ) {
        mid = (left + right) / 2;
        v = check((int)mid); // mid == P ?????±???????????????????????????????§??????
        if ( v >= N ) {
            right = mid;
        } else {
            left = mid;
        }
    }
 
    return (int)right;
}
 
/////////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////////
int main(void)
{
    int i;
//
    scanf("%d %d", &N, &K);
    for ( i = 0 ; i < N ; i++ ) {
        scanf("%d", &W[i] );
    }
 
    printf("%d\n", solve());
 
    return 0;
}