#include <iostream>
#include <fstream>
using namespace std;
int n, k, t[16001];
int szim(int meret)
{
int i, c=0, fuvar=1;
for(i=0; i<n; i++)
{
if(meret>=c+t[i])c+=t[i];
else
{
fuvar++;
c=t[i];
}
}
if(fuvar>k)return 1;
else return 0;
}
int binker(int a, int b, int x)
{
if(a==b)return a;
int p=(a+b)/2;
if(szim(p)) return binker(p+1,b,x);
else return binker(a,p,x);
}
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int i, meret=0, ossz=0;
in>>n>>k;
for(i=0; i<n; i++)
{
in>>t[i];
ossz+=t[i];
if(t[i]>meret)meret=t[i];
}
out<<binker(meret,ossz,(meret+ossz)/2);
return 0;
}