#include<cstdio>
#include<algorithm>
#include<cstring>
#define Nmax 16005
using namespace std;
int n,i,j,k,st,dr,mij,m,s,sol;
int v[Nmax];
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d %d",&n,&k);
st=1;
for (i=1;i<=n;i++)
scanf("%d",&v[i]),dr+=v[i],st=max(v[i],st);
sol=dr;
while (st<=dr)
{
mij=(st+dr)/2;
m=0; s=0;
for (i=1;i<=n;i++)
{
if (s+v[i]<=mij) s+=v[i];
else
{
m++;
s=v[i];
}
}
if (s) m++;
if (m<=k) dr=mij-1,sol=min(sol,mij);
else st=mij+1;
}
printf("%d",sol);
return 0;
}