#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
long long n,m,a[N];
bool cheek(long long mid)
{
long long ans=0,sum=0;
for(int i=1;i<=n;i++)
{
if(a[i]<=(mid-sum))
{
sum+=a[i];
sum++;
}
ans++;
sum=0;
}
if(ans<=m) return true;
return false;
}
int main()
{
long long maxx=-1,maxxx=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxxx+=a[i];
maxx=max(maxx,a[i]);
}
long long l=maxx,r=maxxx+n-1,ans=0;
while(l<=r)
{
long long mid=(l+r)/2;
if(cheek(mid))
{
ans=mid;
r=mid-1;
}
else l=mid+1;
}
cout<<ans<<endl;
return 0;
}