#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;
}