#include <iostream>
using namespace std;
int n, m;
bool check(int mid, int* x) {
int count = 0, sum = 0;
for (int i = 1; i <= n; i++) {
sum += x[i];
if (sum >= mid) {
if (sum > mid)
i--;
count++; sum = 0;
}
if (count > m)
return false;
}
return true;
}
int main() {
cin >> n >> m;
int* x = new int[n + 1];
long right = 0, left = 0;
for (int i = 1; i <= n; i++) {
cin >> x[i];
/*if (x[i] > left)
left = x[i];*/
right += x[i];
}
if (n == 1) {
cout << right; return 0;
}
while (left+1 < right) {
long mid = (left + right) / 2;
if (check(mid, x))
right = mid;
else
left = mid;
}
cout << right;
return 0;
}