package arrays;
import java.util.Scanner;
public class painterpartition {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int k = scn.nextInt();
int [] board=new int[n];
int lo=0;
int hi=0;
for (int i = 0; i < n; i++) {
board[i]=scn.nextInt();
hi += board[i];
}
int finalans=0;
while(lo<=hi) {
int mid=lo+hi/2;
if (isitpossible(board,n,k,mid)) {
finalans=mid;
hi=mid-1;
}else {
lo=mid+1;
}
}
System.out.println(finalans);
}
public static boolean isitpossible(int[] board,int n,int k,int mid) {
int painters=1;
int time=0;
int i=0;
while(i<n){
if (time+board[i]<=mid) {
time +=board[i];
i++;
}
else {
painters++;
time=0;
if (painters>k) {
return false;
}
}
}
return true;
}