#include <stdio.h>
#include <stdlib.h>
int n,k,t[16000];
int ellenor(int x)
{
int ut = 1, db = 0;
for (int i = 0; i < n; i++)
{
if (db + t[i] < x)
db += t[i];
else
{
ut++;
db = t[i];
if (ut > k)
return 0;
}
}
return 1;
}
int binaris(int e,int u)
{
if(e == u)return e;
int kozep = (e+u)/2;
if(ellenor(kozep))return binaris(e,kozep-1);
else return binaris(kozep+1,u);
}
int main()
{
freopen("transport.in","rt",stdin);
freopen("transport.out","wt",stdout);
int sum = 0, nagy = 0;
scanf("%d%d",&n,&k);
for(int i = 0;i < n;i++){
scanf("%d",&t[i]);
sum += t[i];
if(nagy < t[i])nagy = t[i];
}
printf("%d",binaris(nagy,sum));
return 0;
}