import java.util.*;
import java.lang.*;
import java.io.*;
public class Main
{
public static long minimumPossibleNumber(long arr[],int n,long m){
long min=Integer.MIN_VALUE;
long max=0L;
for(int i=0;i<n;i++){
if(arr[i]>min){
min=arr[i];
}
max+=arr[i];
}
Long low=0L;
long high=max;
long res=-1L;
while(low<=high){
long mid=low+(high-low)/2;
if(isPossible(arr ,n,m,mid)){
res=mid;
high=mid-1L;
}
else{
low=mid+1L;
}
}
return res;
}
public static boolean isPossible(long arr[] ,int n ,long m,long mid ){
long studentCount=1L;
long pageCount=0L;
for(int i=0;i<n;i++){
if(pageCount+arr[i]<=mid){
pageCount+=arr[i];
}
else{
studentCount++;
if(studentCount>m||arr[i]>mid){
return false;
}
pageCount=arr[i];
}
}
return true;
}
public static void main (String[] args) throws java.lang.Exception
{
//your code here
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
long arr[]=new long [n];
for(int i=0;i<n;i++){
arr[i]=sc .nextLong();
}
long m=sc.nextLong();
long ans=minimumPossibleNumber(arr,n,m);
System.out.print(ans);
}
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}