import sys inputs = sys.stdin.readline """再帰関数のときセット sys.setrecursionlimit(10**7) import pypyjit pypyjit.set_param('max_unroll_recursion=-1') """ def main(): N, K = map(int, inputs().split()) A = list(map(int, inputs().split())) def judge(m): cnt = 0 power = 0 for i, a in enumerate(A): if cnt > K: break now_val = a + power if now_val < m: pl_cnt = (m - now_val) // (i + 1) if (m - now_val) % (i + 1): pl_cnt += 1 cnt += pl_cnt power += pl_cnt * (i + 1) return cnt <= K left, right = 0, 10 ** 15 while right - left >= 2: mid = (left + right) // 2 if judge(mid): left = mid else: right = mid - 1 if judge(right): print(right) else: print(left) if __name__ == '__main__': main()