#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,a[16005],s[16005];
void cit()
{
f>>n>>k;
f>>a[0];
s[0]=a[0];
for(int i=1;i<n;i++)
{
f>>a[i];
s[i]=s[i-1]+a[i];
}
}
bool verif(int c)
{
int s=0,i=0,j=0;
while(i<n && j<k)
{
s+=a[i];
if(s>c)
{
s=a[i];
j++;
}
i++;
}
if(j<k)
return true;
return false;
}
int valmax()
{
int vmax=0;
for(int i=0;i<n;i++)
{
if(vmax<a[i])
vmax=a[i];
}
return vmax;
}
int main()
{
cit();
long long lg=1;
for(;lg<s[n-1];lg<<=1);
int vmax=valmax();
int i;
for(i=s[n-1];lg!=0;lg>>=1)
{
//bool transp=verif(i-lg);
if(i-lg>=vmax && verif(i-lg))
i-=lg;
}
g<<i;
return 0;
}