#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001];
bool a[16001];
int transport(int n,int x){
int nrt = 1,s = 0;
for (int i = 1; i <= n; i++){
s += v[i];
if (s > x){
/**if (s == v[i]){
return -1;
}*/
s = v[i];
nrt++;
}
}
return nrt;
}
int BinSearch(int n,int k,int st,int dr){
int mij;
while (dr-st > 1){
mij = (st+dr)/2;
if (transport(n,mij) <= k){
dr = mij;
}else{
st = mij;
}
}
return dr;
}
int main()
{
int n,k,s = 0;
fin >> n >> k;
int mx = 0;
for (int i = 1;i <= n; i++){
fin >> v[i];
s += v[i];
if (v[i] > mx){
mx = v[i];
}
}
fout << BinSearch(n,k,mx-1,s);
return 0;
}