#include using namespace std; const long long INF = 1000000000000000000; int main(){ int N, K; cin >> N >> K; vector A(N); for (int i = 0; i < N; i++){ cin >> A[i]; } long long tv = 0, fv = INF; while (fv - tv > 1){ long long mid = (tv + fv) / 2; long long add = 0, cnt = 0; for (int i = 0; i < N; i++){ if (A[i] < mid - add){ long long c = (mid - add - A[i] + i) / (i + 1); add += c * (i + 1); cnt += c; } } if (cnt <= K){ tv = mid; } else { fv = mid; } } cout << tv << endl; }