#include <fstream>
using namespace std;
ifstream in ("fact.in");
ofstream out ("fact.out");
int L = 17;
int n, k;
int v[16001];
bool sepoate (int c)
{
int cc = 0, nr = 0;
for (int i = 1; i <= n; i++)
{
if (v[i] > cc)
{
nr ++;
cc = c;
}
if (v[i] > cc)
return false;
if (nr > k)
return false;
cc -= v[i];
}
return true;
}
int cautbin (int x)
{
int r = 0, pas = 1 << L;
while (pas != 0)
{
if (!sepoate (r + pas))
r += pas;
pas /= 2;
}
return r + 1;
}
int main()
{
in >> n >> k;
for (int i = 1; i <= n; i++)
in >> v[i];
int r = cautbin ();
return 0;
}