#include<bits/stdc++.h>usingnamespace std;constint Maxn=1e5+5;int n,m;int h[Maxn];int now[Maxn];longlong sum[Maxn];int l =1,r =3;int ans;voidin(int&x){
x =0;int f =1;char c =getchar();while(c <'0'|| c >'9'){if(c =='-') f =-1;
c =getchar();}while(c >='0'&& c <='9'){
x =(x <<3)+(x <<1)+ c -'0';
c =getchar();}
x *= f;return;}voidout(int x){if(x <0){
x =-x;putchar('-');}if(x >9){out(x /10);}putchar(x %10+'0');}longlongfill(int l,int r){longlong need=0;for(int i = l; i <= r; i++){
now[i]= h[i];}while(l +1< r){while(now[l]< now[r]){
now[l +1]= now[l]+1;
need += now[l +1]- h[l +1];
l++;}while(now[l]> now[r]){
now[r -1]= now[r]+1;
need += now[r -1]- h[r -1];
r--;}while(l +1< r && now[l]== now[r]){
now[l +1]= now[l]+1;
need += now[l +1]- h[l +1];
l++;
now[r -1]= now[r]+1;
need += now[r -1]- h[r -1];
r--;if(l == r && now[l]> h[l]){
need -= now[l]- h[l];}}}if(need <= m){
ans =max(ans,now[l]);}return need;}intmain(){// freopen("block.in","r",stdin);// freopen("block.out","w",stdout);in(n);in(m);for(int i =1; i <= n; i++){in(h[i]);
sum[i]= sum[i -1]+ h[i];if(ans < h[i]) ans = h[i];}while(l <= n && r <= n){if(l +2> r) r = l +2;for(int i = l; i <= r; i++){while(h[l]+(i - l)<= h[i]&& l < i){
l++;}while(h[r]+(r - i)< h[i]&& r < n){
r++;}}if(l+2> r) r = l +2;if(fill(l,r)<=m)
r++;else
l++;}out(ans);return0;