#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{
int n , klim , i, volmax = 0 ,st = 0;
fin >> n >> klim;
int v[n + 1];
for (i = 1;i <= n;i++)
{
fin >> v[i];
volmax += v[i];
st = max(st,v[i]); //lower bound si volumul maxim
}
int dr = volmax , mid,cnt = 0;
int kcurent = 1, chgvol = 0;
int aux = log2(volmax) + 2;
int ks[aux];
while ( st < dr)
{
cnt++;
mid = st + (dr - st)/2 ;
kcurent = 1;
chgvol = 0;
for(i = 1; i <= n ; i++)
{
if((chgvol + v[i]) <= mid)
{
chgvol += v[i];
}
else
{
kcurent++;
chgvol = v[i];
}
}
ks[cnt] = kcurent;
if(kcurent <= klim)
{
dr = mid;
}
else
{
st = mid + 1;
}
}
fout << st << '\n';
return 0;
}