def main(): import sys input = sys.stdin.read data = input().split() N = int(data[0]) K = int(data[1]) A = list(map(int, data[2:2+N])) total = sum(A) low = 1 high = total // K answer = 0 def check(M): if total < M * K: return False current_sum = 0 splits = 0 prefix_splits = [0] * (N + 1) for i in range(N): current_sum += A[i] if current_sum >= M: splits += 1 current_sum = 0 prefix_splits[i + 1] = splits else: prefix_splits[i + 1] = splits if prefix_splits[N] >= K: return True # Compute prefix sums to quickly get suffix sums prefix_sum = [0] * (N + 1) for i in range(N): prefix_sum[i + 1] = prefix_sum[i] + A[i] for i in range(N): suffix_sum = prefix_sum[N] - prefix_sum[i] if suffix_sum < M: continue if prefix_splits[i] >= K - 1: return True return False while low <= high: mid = (low + high) // 2 if check(mid): answer = mid low = mid + 1 else: high = mid - 1 print(answer) if __name__ == "__main__": main()