#include<iostream>
#define ll long long
using namespace std;
int n, m;
int nums[1000000] = {0};
bool valid(int x) {
int group = 0;
ll rest = 0;
for (int i = 0;i < n;i++) {
if (nums[i]+rest<=x) rest += nums[i];
else {
group++;
rest = nums[i];
}
}
return group < m;
}
ll max(ll a, ll b) {
if (a > b) return a;
else return b;
}
int main() {
cin >> n >> m;
ll maxn = 0;
ll sum=0;
for (int i = 0;i < n;i++) {
cin >> nums[i];
maxn = max(nums[i], maxn);
sum += nums[i];
}
ll l = maxn, r = sum;
while (l < r) {
ll mid = (l + r) >> 1;
if (valid(mid) == true) r = mid;
else l = mid+1;
}
cout << l << endl;
return 0;
}