#include<iostream>
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, nrTransp;
int saltele[16005] = {0};
int BinarySearch(int Left, int Right)
{
int ultim = Right;
while(Left <= Right)
{
int mid = (Left + Right) / 2;
int index = 0;
int k = 1;
for(int i = 1; i<= n; i++)
if(saltele[i] - saltele[index] > mid)
{
index = i - 1;
k++;
}
if(k > nrTransp)
Left = mid + 1;
else {
Right = mid - 1;
ultim = mid;
}
}
return ultim;
}
int main()
{
int temp = 0;
int vf = 0;
f >> n >> nrTransp;
for(int i = 1; i <= n; i++)
{
f >> temp;
if(temp > vf)
vf = temp;
saltele[i] = temp + saltele[i - 1];
}
int Left = vf;
int Right = saltele[n];
g << BinarySearch(Left, Right);
}