#include<iostream>
#include<cstring>
using namespace std;
bool check(int mid, int m, int*kaixiao,int n) {
int sum = 0;
int yue = 1;
for (int i = 0; i < n; i++) {
if (sum+ kaixiao[i]<= mid) {
sum += kaixiao[i];
}
else {
sum = kaixiao[i];
yue++;
}
}
if (yue <= m) {
return 1;
}
else { return 0; }
}
int main() {
int n, m;
cin >> n >> m;
int*kaixiao = new int[n];
//int*fagos = new int[m];
int r = 0;
int l = 0;
for (int i = 0; i < n; i++) {
cin >> kaixiao[i];
r += kaixiao[i];
if (l < kaixiao[i])
l = kaixiao[i];
}
int result = 0;
while (l <= r) {
int mid = (l + r) >> 1;
if (check(mid = mid, m = m, kaixiao = kaixiao,n=n)) {
r = mid - 1;
result = mid;
}
else {
l = mid + 1;
}
}
cout <<result;
return 0;
}