#include <bits/stdc++.h>
#define fi first
#define se second
#define int long long
using namespace std;
const long long oo=1e18;
const int mod=1e9+7;
int B=320;
void home()
{
freopen("main.inp","r",stdin);
freopen("main.out","w",stdout);
}
bool bit(int x,int i){return (x>>i)&1;}
struct Query
{
int st,l,r,k,id;
bool operator<(const Query &ot)const
{
if(l/B!=ot.l/B)return l/B<ot.l/B;
if((l/B)%2==0)return r<ot.r;
else return r>ot.r;
}
}Q[100005];
int n,q;
int a[100005];
int ans[100005],sum[450],cnt[450],on[100005],vals[100005];
pair<int,int>val[100005];
void add(int i)
{
int id=val[i].se;
sum[id/B]+=val[i].fi;
cnt[id/B]++;on[id]=true;
}
void del(int i)
{
int id=val[i].se;
sum[id/B]-=val[i].fi;
cnt[id/B]--;on[id]=false;
}
int Find(int id,int k)
{
int l=id,d=0;
for(;l/B==id/B&&l<=n;l++)
{
if(!on[l])continue;
if(a[l]>k)return l-id;
k-=a[l],d++;
}
if(l>n)return n-id+1;
l/=B;
while(l*B<=n&&sum[l]<=k)
{
k-=sum[l];d+=cnt[l];
l++;
}
l*=B;
if(l>n)return n-id+1;
for(;l<=n;l++)
{
if(!on[l])continue;
if(a[l]>k)return l-id;
k-=a[l],d++;
}
return l-id;
}
void Tcmduc_VOI26()
{
cin>>n>>q;
for(int i=1;i<=n;i++)
{
cin>>a[i];vals[i]=a[i];
val[i]={a[i],i};
}
sort(val+1,val+n+1);
sort(vals+1,vals+n+1);
for(int i=1;i<=q;i++)
{
int st,l,r,k;cin>>st>>l>>r>>k;
int posL=lower_bound(vals+1,vals+n+1,l)-vals;
int posR=upper_bound(vals+1,vals+n+1,r)-vals-1;
Q[i]={st,posL,posR,k,i};
}
sort(Q+1,Q+q+1);
int L=1,R=0;
for(int i=1;i<=q;i++)
{
auto [st,l,r,k,id]=Q[i];
while(L>l)add(--L);
while(R<r)add(++R);
while(L<l)del(L++);
while(R>r)del(R--);
ans[id]=Find(st,k);
}
for(int i=1;i<=q;i++)cout<<ans[i]<<'\n';
}
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);//home();
Tcmduc_VOI26();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxvbmcgbG9uZyBvbz0xZTE4Owpjb25zdCBpbnQgbW9kPTFlOSs3OwppbnQgQj0zMjA7CnZvaWQgaG9tZSgpCnsKICAgIGZyZW9wZW4oIm1haW4uaW5wIiwiciIsc3RkaW4pOwogICAgZnJlb3BlbigibWFpbi5vdXQiLCJ3IixzdGRvdXQpOwp9CmJvb2wgYml0KGludCB4LGludCBpKXtyZXR1cm4gKHg+PmkpJjE7fQpzdHJ1Y3QgUXVlcnkKewogICAgaW50IHN0LGwscixrLGlkOwogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUXVlcnkgJm90KWNvbnN0CiAgICB7CiAgICAgICAgaWYobC9CIT1vdC5sL0IpcmV0dXJuIGwvQjxvdC5sL0I7CiAgICAgICAgaWYoKGwvQiklMj09MClyZXR1cm4gcjxvdC5yOwogICAgICAgIGVsc2UgcmV0dXJuIHI+b3QucjsKICAgIH0KfVFbMTAwMDA1XTsKaW50IG4scTsKaW50IGFbMTAwMDA1XTsKaW50IGFuc1sxMDAwMDVdLHN1bVs0NTBdLGNudFs0NTBdLG9uWzEwMDAwNV0sdmFsc1sxMDAwMDVdOwpwYWlyPGludCxpbnQ+dmFsWzEwMDAwNV07CnZvaWQgYWRkKGludCBpKQp7CiAgICBpbnQgaWQ9dmFsW2ldLnNlOwogICAgc3VtW2lkL0JdKz12YWxbaV0uZmk7CiAgICBjbnRbaWQvQl0rKztvbltpZF09dHJ1ZTsKfQp2b2lkIGRlbChpbnQgaSkKewogICAgaW50IGlkPXZhbFtpXS5zZTsKICAgIHN1bVtpZC9CXS09dmFsW2ldLmZpOwogICAgY250W2lkL0JdLS07b25baWRdPWZhbHNlOwp9CmludCBGaW5kKGludCBpZCxpbnQgaykKewogICAgaW50IGw9aWQsZD0wOwogICAgZm9yKDtsL0I9PWlkL0ImJmw8PW47bCsrKQogICAgewogICAgICAgIGlmKCFvbltsXSljb250aW51ZTsKICAgICAgICBpZihhW2xdPmspcmV0dXJuIGwtaWQ7CiAgICAgICAgay09YVtsXSxkKys7CiAgICB9CiAgICBpZihsPm4pcmV0dXJuIG4taWQrMTsKICAgIGwvPUI7CiAgICB3aGlsZShsKkI8PW4mJnN1bVtsXTw9aykKICAgIHsKICAgICAgICBrLT1zdW1bbF07ZCs9Y250W2xdOwogICAgICAgIGwrKzsKICAgIH0KICAgIGwqPUI7CiAgICBpZihsPm4pcmV0dXJuIG4taWQrMTsKICAgIGZvcig7bDw9bjtsKyspCiAgICB7CiAgICAgICAgaWYoIW9uW2xdKWNvbnRpbnVlOwogICAgICAgIGlmKGFbbF0+aylyZXR1cm4gbC1pZDsKICAgICAgICBrLT1hW2xdLGQrKzsKICAgIH0KICAgIHJldHVybiBsLWlkOwp9CnZvaWQgVGNtZHVjX1ZPSTI2KCkKewogICAgY2luPj5uPj5xOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgY2luPj5hW2ldO3ZhbHNbaV09YVtpXTsKICAgICAgICB2YWxbaV09e2FbaV0saX07CiAgICB9CiAgICBzb3J0KHZhbCsxLHZhbCtuKzEpOwogICAgc29ydCh2YWxzKzEsdmFscytuKzEpOwogICAgZm9yKGludCBpPTE7aTw9cTtpKyspCiAgICB7CiAgICAgICAgaW50IHN0LGwscixrO2Npbj4+c3Q+Pmw+PnI+Pms7CiAgICAgICAgaW50IHBvc0w9bG93ZXJfYm91bmQodmFscysxLHZhbHMrbisxLGwpLXZhbHM7CiAgICAgICAgaW50IHBvc1I9dXBwZXJfYm91bmQodmFscysxLHZhbHMrbisxLHIpLXZhbHMtMTsKICAgICAgICBRW2ldPXtzdCxwb3NMLHBvc1IsayxpfTsKICAgIH0KICAgIHNvcnQoUSsxLFErcSsxKTsKICAgIGludCBMPTEsUj0wOwogICAgZm9yKGludCBpPTE7aTw9cTtpKyspCiAgICB7CiAgICAgICAgYXV0byBbc3QsbCxyLGssaWRdPVFbaV07CiAgICAgICAgd2hpbGUoTD5sKWFkZCgtLUwpOwogICAgICAgIHdoaWxlKFI8cilhZGQoKytSKTsKICAgICAgICB3aGlsZShMPGwpZGVsKEwrKyk7CiAgICAgICAgd2hpbGUoUj5yKWRlbChSLS0pOwogICAgICAgIGFuc1tpZF09RmluZChzdCxrKTsKICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PXE7aSsrKWNvdXQ8PGFuc1tpXTw8J1xuJzsKfQpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsvL2hvbWUoKTsKICAgIFRjbWR1Y19WT0kyNigpOwogICAgcmV0dXJuIDA7Cn0K