#include "ricehub.h"
#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;
const ll N=1e5+5;
int a[N],n,l,p[N],ans1,ans2;
bool check(int ans,ll cost){
int idx1=(ans+1)/2,idx2=idx1+1;
int idx0=1;
for (int i=ans; i<=n; i++){
ans1=(p[i]-p[idx1])-(i-idx1)*a[idx1];
ans1+=(idx1-idx0)*a[idx1]-(p[idx1-1]-p[idx0-1]);// if (ans==4) cout<<i<<" "<<idx1<<" "<<idx2<<" "<<idx0<<" "<<ans1<<" "<<ans2<<endl;
if (ans1<=cost) return 1;
ans2=(p[i]-p[idx2])-(i-idx2)*a[idx2];
ans2+=(idx2-idx0)*a[idx2]-(p[idx2-1]-p[idx0-1]);//if (ans==4) cout<<i<<" "<<idx1<<" "<<idx2<<" "<<idx0<<" "<<ans1<<" "<<ans2<<endl;
if (ans2<=cost) return 1;
idx1++; idx2++; idx0++;
}
return 0;
}
int besthub(int R, int L, int X[], long long B)
{
n=R; l=L;
for (int i=0; i<n; i++){
a[i+1]=X[i];
}
p[0]=0;
for (int i=1; i<=n; i++) p[i]=p[i-1]+a[i];
int x,ans=0;
x=log2(n);
for (int o=x; o>=0; o--){
ans+=(1<<o);
if (ans>n){
ans-=(1<<o); continue;
}
// cout<<ans<<endl;
if (check(ans,B)==0) ans-=(1<<o);
}
return ans;
}