#include <fstream>
#define int long long
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int N = 16005;
int v[N];
int n, k, maxx;
bool ok(int c) {
if (c < maxx) return false;
int s = 0, tr = 0;
for (int i = 1; i <= n; i++) {
if (s + v[i] > c) {
s = v[i];
tr++;
}
else s += v[i];
}
if (s > 0) tr++;
return tr <= k;
}
int32_t main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> v[i];
maxx = max(maxx, v[i]);
}
int pos = 1ll << 60;
for (int pas = 1ll << 59; pas > 0; pas >>= 1) {
if (ok(pos - pas)) {
pos -= pas;
}
}
cout << pos;
return 0;
}