#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <list>
#include <string>
#include <cmath>
#include <bitset>
int n, mm;
long long nums[100005];
bool check(int x) {
int ret = 0;
long long sum = 0;
for (int i = 0; i < n; i++) {
if((sum+=nums[i])>x)
sum=nums[i],ret++;
}
return ret >= mm;
}
int main() {
cin >> n>>mm;
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
int ll =-1, r = 1000000007;
while (ll + 1 != r) {
int mid = (ll + r) / 2;
if (check(mid))
ll = mid;
else
r= mid;
}
cout << r;
return 0;
}