#include <stdio.h>
#include <iostream>
#define MAX 16000
using namespace std;
int v[MAX];
int main()
{
FILE *fin, *fout;
int n, k, i, st, dr, mij, nrt, suma, elem;
fin = fopen("transport.in", "r");
fout = fopen("transport.out", "w");
fscanf(fin, "%d%d", &n, &k);
st = dr = 0;
for(i = 0; i < n; i++)
{
fscanf(fin, "%d", &v[i]);
if(st < v[i])st = v[i];
dr += v[i];
}
while(st <= dr)
{
mij = (st + dr) / 2;
nrt = i = 0;
while(i < n)
{
suma = 0;
while(i < n && suma <= mij)
{
suma += v[i];
i++;
}
if(suma > mij)
{
i--;
suma -= v[i];
}
nrt++;
}
if(nrt <= k)
{
elem = mij;
dr = mij - 1;
}
else st = mij + 1;
}
fprintf(fout, "%d", elem);
fclose( fin );
fclose( fout );
return 0;
}