#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, k, saltele[16002], maxi;
long long int capacitate, avr, suma;
int main()
{
cin >> n >> k;
for(int i=1; i<=n; ++i)
{
cin >> saltele[i];
suma += saltele[i];
maxi = max(maxi, saltele[i]);
}
if(suma % k == 0) avr = suma / k;
else avr = (suma / k) + 1;
int st = maxi, dr;
if(maxi >= avr) dr = suma;
else dr = avr;
while(st <= dr)
{
int mij = (st + dr) / 2;
int transporturi = 0;
suma = 0;
for(int i=1; i<=n; ++i)
{
if(saltele[i] <= mij && (suma+saltele[i]) <= mij)
suma += saltele[i];
if((suma + saltele[i+1]) > mij)
{
suma = 0;
transporturi++;
}
}
if(suma != 0)
transporturi++;
if(transporturi > k)
st = mij + 1;
else{
dr = mij - 1;
capacitate = mij;
}
}
cout << capacitate;
return 0;
}