N, K = gets.split.map(&:to_i) A = gets.split.map(&:to_i) ok = 0 ng = A.max + K * N + 1 def f(x) k = K sum = 0 A.each.with_index(1) do |a, i| a += sum if a < x diff = x - a op_cnt = (diff + i - 1) / i k -= op_cnt sum += i * op_cnt end if k < 0 return false end end true end while (ok - ng).abs >= 2 x = (ok + ng) / 2 if f(x) ok = x else ng = x end end puts ok