#include<iostream>
#include<set>
#include<map>
#include<algorithm>
using namespace std;
typedef long long ll;
int w[2][100007]={0},c=0,czh=0,k,n,m,sd,zs=-1,num,a=1,b,y=-1,mid=1;
int cnt (int mid){
zs=0x3f3f3f;
k=0;
c=1;
for(int i=1;i<=n;i++){
if(w[1][i]-w[1][k]>mid){
c++;
cout<<k<<endl;
k=i-1;
}
}
return c;
}
int main(){
// freopen("doc.in","r",stdin);
// freopen("doc.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>sd;
czh+=sd;
w[0][i]=sd;
w[1][i]=czh;
mid=max(sd,mid);
}
zs=y;
b=czh;
a=1;
// cout<<a<<" "<<b<<" "<<c<<" "<<mid<<endl;
while(a<b){
if(cnt(mid)>m){
a=mid;
}
else{
b=mid-1;
}
// cout<<a<<" "<<b<<" "<<c<<' '<<mid<<endl;
mid=a+((b-a+1)>>1);
}
cout<<a;
return 0;
}