#include<iostream>
#define N 100001
#define M 1000000001

int n,k,w[N];

bool check(int P){
  int x=0,sum;
  for(int i=0;i<k;i++){
    sum=0;
    for(int j=x;j<n;j++){
      if(sum+w[j]<=P){
	sum+=w[j];
	x++;
      }else{
	break;
      }
    }
    if(x==n){
      return true;
    }
  }
  return false;
}
 
int bynary_search(){
  int l=0,r=M;
  while(l<r){
    int m=(l+r)/2;
    if(check(m)){
      r=m;
    }else{
      l=m+1;
    }
  }
  return l;
}
 
int main(){
  std::cin>>n;
  std::cin>>k;
  for(int i=0;i<n;i++){
    std::cin>>w[i];
  }
  std::cout<<bynary_search()<<"\n";
  return 0;
}
