#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int n, k, i;
long long int T[100000];

long long int check(int p)
{
  int j = 0;
  long long int s;

  for(i = 0; i < k; i++){
    s = 0;
    while(s + T[j] <= p){
      s += T[j];
      j++;
      if(i == n) return n;
    }
  }
  return j;
}

long long int solve()
{
  long long int left = 0;
  long long int right = 100000 * 10000;
  long long mid;
  int v;

  while(right - left > 1){
    mid = (left + right) / 2;
    v = check(mid);
    if(v >= n){
      right = mid;
    }
    else{
      left = mid;
    }
  }
  return right;
}

int main(void)
{
  long long int ans;

  scanf("%d %d", &n, &k);

  for(i = 0; i < n; i++){
    scanf("%d", &T[i]);
  }
  ans = solve();
  printf("%d\n", ans);
  return 0;
}

