#include<bits/stdc++.h>
#define rep(a,b,c) for (int i=a;i<=b;i+=c)
#define out(n) cout<<(n)<<' '
#define num_out(n) write(n);printf(" ")
#define ll long long
using namespace std;
template<typename T>inline void read(T &n);
template<typename T>inline void write(T n);
const int N=1e5+5;
int n,m,a[N];
inline bool check(int x){
int sum=0,cnt=0;
for (int i=1;i<=n;i++){
if (sum+a[i]>x) sum=a[i],cnt++;
else sum+=a[i];
}
return cnt<=m;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("debug.in","r",stdin);
#endif
read(n);read(m);
int l,r=1e9,ans;
rep(1,n,1) read(a[i]),l=max(l,a[i]);
while (l<=r){
int mid=l+r>>1;
if (check(mid)) ans=mid,r=mid-1;
else l=mid+1;
}
write(ans);
return 0;
}
template<typename T>inline void read(T &n){
n=0;T f=1;
char c;
do{
c=getchar();
if (c=='-') f=-1;
}while (c<'0'||c>'9');
while (c>='0'&&c<='9'){
n=(n<<1)+(n<<3)+(c^48);
c=getchar();
}
n*=f;
}
template<typename T>inline void write(T n){
if (n<0) putchar('-'),n=-n;
if (n>9) write(n/10);
putchar(n%10+'0');return;
}