#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const ll MAXN=1e6+55;
ll n,m,a[MAXN],ans,maxx;
inline bool look(ll mid){
ll sum=0;
ll now=0;
for(ll i=1;i<=n;++i){
if(a[i]+now<=mid){
now+=a[i];
}
else{
++sum;
now=a[i];
}
}
return sum>=m;
}
void fd(){
ll l=maxx,r=1e8;
while(l<=r){
ll mid=(l+r)>>1;
if(look(mid))
r=mid-1,ans=mid;
else
l=mid+1;
}
}
int main(){
cin>>n>>m;
for(ll i=1;i<=n;++i){
cin>>a[i];
maxx=max(a[i],maxx);
}
fd();
cout<<ans;
return 0;
}