#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int verif(int v[100], int n, int k, int c)
{
int i=1,s=0,nr=0;
while(i<=n)
{
while(s+v[i]<=c && i<=n)
{s+=v[i];
i++;}
nr++;
if(nr>k)
return 0;
s=0;
}
return 1;
}
int main()
{
int n,k,i,v[16000],s=0,max=0,m,ls,ld,ok=0,x;
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>v[i];
s=s+v[i];
if(v[i]>max)
max=v[i];
}
if(k==1)
g<<s;
else
{
ls=max;
ld=s;
while(ls<=ld)
{
m=(ls+ld)/2;
if(verif(v,n,k,m)==1)
{
x=m;
ld=m-1;
}
else ls=m+1;
}
g<<x;
}
return 0;
}