#include <iostream>
#include<fstream>
using namespace std;
#define MAX 999999
int s[MAX],n,k,suma,maxim=0;
ifstream in("transport.in");
ofstream out("transport.out");
void citire ()
{
in>>n>>k;
for(int i=1; i<=n; i++)
{
in>>s[i];
suma+=s[i];
maxim=max(maxim, s[i]);
}
in.close();
}
int nr_transporturi(int mij)
{
int sum=0;
int trans=1;
for(int i=1; i<=n; i++)
{
sum+=s[i];
if(sum>mij)
{
trans++;
sum=s[i];
}
}
return trans;
}
int main()
{
int st,dr,mijloc,rez;
citire();
st=maxim;
dr=suma;
while(st<=dr)
{
mijloc=(st+dr)/2;
if(nr_transporturi(mijloc)<=k)
{
dr=mijloc-1;
rez=mijloc;
}
else
st=mijloc+1;
}
out<<rez;
out.close();
return 0;
}