#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16005], sol;
int main()
{
int n, k, max = 0, st, dr, mid, sum = 0;
in >> n >> k;
int i;
for (i = 1; i <= n; i++)
{
in >> v[i];
sum += v[i];
if (v[i] > max)
max = v[i];
}
st = max, dr = sum;
while (st <= dr)
{
int crt = 1, s = 0;
mid = st + (dr - st) / 2;
for (i = 1; i <= n; i++)
{
if (s + v[i] <= mid)
s += v[i];
else
{
s = v[i];
crt++;
}
}
if (crt > k)
st = mid + 1;
else
sol = mid, dr = mid - 1;
}
out << sol;
return 0;
}