using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static long[] NList => ReadLine().Split().Select(long.Parse).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, k) = (c[0], c[1]); var a = NList; var ok = 0L; var ng = 1_000_000_000_000_000; while (ng - ok > 1) { var mid = (ok + ng) / 2; var cnt = 0L; var add = 0L; for (var i = 0; i < n; ++i) { if (a[i] + add < mid) { var sub = (mid - add - a[i] + i) / (i + 1); cnt += sub; add += sub * (i + 1); } } if (cnt > k) ng = mid; else ok = mid; } WriteLine(ok); } }