def max_min_value(): import sys input = sys.stdin.read().split() N = int(input[0]) K = int(input[1]) A = list(map(int, input[2:2+N])) left = 0 right = sum(A) answer = 0 def is_possible(m): count = 0 current_sum = 0 for num in A: current_sum += num if current_sum >= m: count += 1 current_sum = 0 if count >= K: return True # For circular case, check the remaining part if it can wrap around (but the code is handled as linear) return count >= K while left <= right: mid = (left + right) // 2 if mid == 0: answer = mid left = mid + 1 continue if is_possible(mid): answer = mid left = mid + 1 else: right = mid - 1 print(answer) max_min_value()