#include<iostream>
using namespace std;
long long lst[100010],res = 1e9;
int n,m;
bool check(long long mid)
{
int nums = 0,cur = 0,nt = 1;
while(cur < n)
{
bool flag = false;
while(nt<=n && lst[nt]-lst[cur] <= mid)
{
nt ++;
flag = true;
}
if(!flag) nt ++;
nums ++;
cur = nt - 1;
if(cur == n) break;
}
if(nums == m) res = min(res,mid);
if(nums > m) return true;
else return false;
}
int main()
{
cin >> n >> m;
for(int i=1;i<=n;i++) cin >> lst[i];
for(int i=1;i<=n;i++) lst[i] += lst[i-1];
long long l = 1, r = 1e9;
while(l<r)
{
long long mid = (l+r+1) >> 1;
if(check(mid)) l = mid;
else r = mid - 1;
}
cout << res << endl;
return 0;
}