#include <iostream>
#include <math.h>
using namespace std;
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
int N, M;
constexpr int X = 1e5 + 10;
int a[X];
inline bool check(int mid,int M) {
int sum = 0;
for (int i = 1; i <= N; i++){
sum += a[i];
if (a[i] > mid) return false;
if (sum > mid){
M--;
sum = a[i];
if (!M){
return false;
}
}
}
return true;
}
inline int splitArr() {
int ans = -1;
int l = 0, r = 0;
for (int i = 1; i <= N; i++){
cin >> a[i];
r += a[i];
if (a[i] > l){
l = a[i];
}
}
int mid = 0;
while (l <= r){
mid = (l + r+1) >> 1;
if (check(mid, M)){
ans = mid;
r = mid - 1;
} else{
l = mid + 1;
}
}
return ans;
}
signed main() {
IOS;
cin >> N >> M;
int ans = splitArr();
cout << ans << endl;
return 0;
}