N,K=map(int,input().split()) A=[int(i) for i in input().split()] def solve(N,K,A,X): ''' 長さNの列Aに対して操作K回以下で最小値をX以上にできるかどうか ''' B=[A[i] for i in range(N)] geta=0 for i in range(N): B[i]+=geta if B[i]=0: return True else: return False low=0 high=10**15 while(high-low>1): mid=(high+low)//2 if solve(N,K,A,mid): low=mid else: high=mid print(low)