#include<iostream>
using namespace std;
#define ll long long
const int N =1e5+6;
int n,m;
ll arr[N] , res[N];
int bs(int l,int r,int key){
while(l<r){
int mid = l+r+1>>1;
if(res[mid] <= key) l = mid;
else r = mid - 1;
}
return l;
}
bool check(int mid){
int temp = bs(0,n-1,mid);
if(temp>=n-1)return false;
int x = m-2;
if(x>0){
while(x--){
int y = mid + res[temp];
temp = bs(temp+1,n-1,y);
if(temp >= n-1)return false;
}
}
if(res[n-1]-res[temp] > mid) return true;
else return false;
}
int main(){
int maxm = 0;
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i)
{
scanf("%d",&arr[i]);
if(maxm<arr[i])maxm = arr[i];
}
res[0] = arr [0];
for(int i=1;i<n;++i)res[i] = res[i-1]+arr[i];
int l = maxm, r = res[n-1];
while(l<r){
int mid =(l+r)/2;
if(check(mid)) l =mid+1;
else r = mid;
}
cout<<l;
}