#include <stdio.h>
using namespace std;
int n, k, v[16001];
bool verif (int x)
{
int top = 1, s = 0, nr = 0;
while(top <= n)
{
while(s + v[top] <= x && top <= n)
{
s += v[top];
top++;
}
if(v[top] > x)
return false;
nr++;
s = 0;
}
if(nr > k)
return false;
return true;
}
int cb()
{
int i = 0, pas = 1 << 29;
while( pas != 0)
{
if( verif (i + pas) == 0)
i += pas;
pas >>= 1;
}
return i+1;
}
int main()
{
FILE *fin, *fout;
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
fscanf(fin,"%d%d", &n, &k);
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d", &v[i]);
}
fprintf(fout,"%d", cb());
return 0;
}