#include <bits/stdc++.h>
// #define
using namespace std;
int a[1000007],n,q,ans[1000007];
int nxt[1000007],f[1000007];
pair<int,int> vt[1000007];
int st[4000007];
vector<pair<pair<int,int>,pair<int,int>> > tv[1000007];
int tim(int x) {
int l=1,r=n,ans=1;
while (l<=r) {
int g=(l+r)>>1;
if (vt[g].first<=x) {
ans=g;
l=g+1;
} else r=g-1;
}
return ans;
}
void up(int id,int l,int r,int i,int x) {
if (l>i||r<i) return ;
if (l>=i&&r<=i) {
st[id]=max(st[id],x);
return ;
}
int g=(l+r)>>1;
up(id<<1,l,g,i,x);
up(id<<1|1,g+1,r,i,x);
st[id]=max(st[id<<1],st[id<<1|1]);
}
int wlak(int id, int l,int r,int u,int v,int x) {
if (l>v||r<u) return -1;
if (l==r) {
if (st[id]>=x) return vt[l].first; else return -1;
}
int g=(l+r)>>1,ans=-1;
if (st[id<<1]>=x) ans=wlak(id<<1,l,g,u,v,x);
if (ans==-1) {
ans=wlak(id<<1|1,g+1,r,u,v,x);
}
return ans;
}
int tim1(int x) {
int l=1,r=n,ans=0;
while (l<=r) {
int g=(l+r)>>1;
if (vt[g].first>=x) {
ans=g;
r=g-1;
} else l=g+1;
}
return ans;
}
int get(int id,int l,int r,int u,int v) {
if (l>v||r<u) return 0;
if (l>=u&&r<=v) return st[id];
int g=(l+r)>>1;
return max(get(id<<1,l,g,u,v),get(id<<1|1,g+1,r,u,v));
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n>>q;
for (int i=1;i<=n;i++) {
cin>>a[i];
vt[i]={a[i],i};
}
for (int i=1;i<=4*n;i++) st[i]=0;
sort(vt+1,vt+n+1);
vt[0].first=-1;
vt[n+1].first=-1;
int d=0;
for (int i=n;i>0;i--) {
if (vt[i].first==vt[i+1].first) {
nxt[vt[i].second]=d;
} else {
nxt[vt[i].second]=0;
d=vt[i].second;
}
// nxt[vt[i].second]=d;
}
nxt[n+1]=n+1;
for (int i=1;i<=q;i++) {
int l,r,u,v;
cin>>l>>r>>u>>v;
tv[l].push_back({{i,r},{u,v}});
}
// for (int i=1;i<=n;i++) cout<<vt[i].first<<' ';
// cout<<'\n';
for (int i=1;i<=n;i++) {
up(1,1,n,tim(a[i]),nxt[i]);
for (pair<pair<int,int>,pair<int,int>> ii:tv[i]) {
int u=tim1(ii.second.first),v=tim(ii.second.second);
if (u==0||v==0) {
ans[ii.first.first]=-1;
continue ;
}
// cout<<st[1]<<'\n';
// cout<<ii.second.first<<' '<<ii.second.second<<' '<<u<<' '<<v<<'\n';
ans[ii.first.first]=wlak(1,1,n,u,v,ii.first.second);
}
// for (int i=1;i<=n;i++) cout<<get(1,1,n,i,i)<<' ';
// cout<<'\n';
}
for (int i=1;i<=q;i++) cout<<ans[i]<<'\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Ci8vICNkZWZpbmUgCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBhWzEwMDAwMDddLG4scSxhbnNbMTAwMDAwN107CmludCBueHRbMTAwMDAwN10sZlsxMDAwMDA3XTsKcGFpcjxpbnQsaW50PiB2dFsxMDAwMDA3XTsKaW50IHN0WzQwMDAwMDddOwp2ZWN0b3I8cGFpcjxwYWlyPGludCxpbnQ+LHBhaXI8aW50LGludD4+ID4gdHZbMTAwMDAwN107IAppbnQgdGltKGludCB4KSB7CiAgICBpbnQgbD0xLHI9bixhbnM9MTsKICAgIHdoaWxlIChsPD1yKSB7CiAgICAgICAgaW50IGc9KGwrcik+PjE7CiAgICAgICAgaWYgKHZ0W2ddLmZpcnN0PD14KSB7CiAgICAgICAgICAgIGFucz1nOwogICAgICAgICAgICBsPWcrMTsKICAgICAgICB9IGVsc2Ugcj1nLTE7CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CnZvaWQgdXAoaW50IGlkLGludCBsLGludCByLGludCBpLGludCB4KSB7CiAgICBpZiAobD5pfHxyPGkpIHJldHVybiA7CiAgICBpZiAobD49aSYmcjw9aSkgewogICAgICAgIHN0W2lkXT1tYXgoc3RbaWRdLHgpOwogICAgICAgIHJldHVybiA7CiAgICB9CiAgICBpbnQgZz0obCtyKT4+MTsKICAgIHVwKGlkPDwxLGwsZyxpLHgpOwogICAgdXAoaWQ8PDF8MSxnKzEscixpLHgpOwogICAgc3RbaWRdPW1heChzdFtpZDw8MV0sc3RbaWQ8PDF8MV0pOwp9CmludCB3bGFrKGludCBpZCwgaW50IGwsaW50IHIsaW50IHUsaW50IHYsaW50IHgpIHsKICAgIGlmIChsPnZ8fHI8dSkgcmV0dXJuIC0xOwogICAgaWYgKGw9PXIpIHsKICAgICAgICBpZiAoc3RbaWRdPj14KSByZXR1cm4gdnRbbF0uZmlyc3Q7IGVsc2UgcmV0dXJuIC0xOwogICAgfQogICAgaW50IGc9KGwrcik+PjEsYW5zPS0xOwogICAgaWYgKHN0W2lkPDwxXT49eCkgYW5zPXdsYWsoaWQ8PDEsbCxnLHUsdix4KTsKICAgIGlmIChhbnM9PS0xKSB7CiAgICAgICAgYW5zPXdsYWsoaWQ8PDF8MSxnKzEscix1LHYseCk7CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CmludCB0aW0xKGludCB4KSB7CiAgICBpbnQgbD0xLHI9bixhbnM9MDsKICAgIHdoaWxlIChsPD1yKSB7CiAgICAgICAgaW50IGc9KGwrcik+PjE7CiAgICAgICAgaWYgKHZ0W2ddLmZpcnN0Pj14KSB7CiAgICAgICAgICAgIGFucz1nOwogICAgICAgICAgICByPWctMTsKICAgICAgICB9IGVsc2UgbD1nKzE7CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CmludCBnZXQoaW50IGlkLGludCBsLGludCByLGludCB1LGludCB2KSB7CiAgICBpZiAobD52fHxyPHUpIHJldHVybiAwOwogICAgaWYgKGw+PXUmJnI8PXYpIHJldHVybiBzdFtpZF07CiAgICBpbnQgZz0obCtyKT4+MTsKICAgIHJldHVybiBtYXgoZ2V0KGlkPDwxLGwsZyx1LHYpLGdldChpZDw8MXwxLGcrMSxyLHUsdikpOwp9CmludDMyX3QgbWFpbigpIAp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNpbj4+bj4+cTsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykgewogICAgICAgIGNpbj4+YVtpXTsKICAgICAgICB2dFtpXT17YVtpXSxpfTsKICAgIH0KICAgIGZvciAoaW50IGk9MTtpPD00Km47aSsrKSBzdFtpXT0wOwogICAgc29ydCh2dCsxLHZ0K24rMSk7CiAgICB2dFswXS5maXJzdD0tMTsKICAgIHZ0W24rMV0uZmlyc3Q9LTE7CiAgICBpbnQgZD0wOwogICAgZm9yIChpbnQgaT1uO2k+MDtpLS0pIHsKICAgICAgICBpZiAodnRbaV0uZmlyc3Q9PXZ0W2krMV0uZmlyc3QpIHsKICAgICAgICAgICAgbnh0W3Z0W2ldLnNlY29uZF09ZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBueHRbdnRbaV0uc2Vjb25kXT0wOwogICAgICAgICAgICBkPXZ0W2ldLnNlY29uZDsKICAgICAgICB9CiAgICAgICAgLy8gbnh0W3Z0W2ldLnNlY29uZF09ZDsKICAgIH0gICAKCiAgICBueHRbbisxXT1uKzE7CiAgICBmb3IgKGludCBpPTE7aTw9cTtpKyspIHsKICAgICAgICBpbnQgbCxyLHUsdjsKICAgICAgICBjaW4+Pmw+PnI+PnU+PnY7CiAgICAgICAgdHZbbF0ucHVzaF9iYWNrKHt7aSxyfSx7dSx2fX0pOwogICAgfQogICAgLy8gZm9yIChpbnQgaT0xO2k8PW47aSsrKSBjb3V0PDx2dFtpXS5maXJzdDw8JyAnOwogICAgLy8gY291dDw8J1xuJzsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykgewogICAgICAgIAogICAgICAgIHVwKDEsMSxuLHRpbShhW2ldKSxueHRbaV0pOwogICAgICAgIGZvciAocGFpcjxwYWlyPGludCxpbnQ+LHBhaXI8aW50LGludD4+IGlpOnR2W2ldKSB7CiAgICAgICAgICAgIGludCB1PXRpbTEoaWkuc2Vjb25kLmZpcnN0KSx2PXRpbShpaS5zZWNvbmQuc2Vjb25kKTsKICAgICAgICAgICAgaWYgKHU9PTB8fHY9PTApIHsKICAgICAgICAgICAgICAgIGFuc1tpaS5maXJzdC5maXJzdF09LTE7CiAgICAgICAgICAgICAgICBjb250aW51ZSA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gY291dDw8c3RbMV08PCdcbic7CiAgICAgICAgICAgIC8vIGNvdXQ8PGlpLnNlY29uZC5maXJzdDw8JyAnPDxpaS5zZWNvbmQuc2Vjb25kPDwnICc8PHU8PCcgJzw8djw8J1xuJzsKICAgICAgICAgICAgYW5zW2lpLmZpcnN0LmZpcnN0XT13bGFrKDEsMSxuLHUsdixpaS5maXJzdC5zZWNvbmQpOwogICAgICAgIH0KICAgICAgICAvLyBmb3IgKGludCBpPTE7aTw9bjtpKyspIGNvdXQ8PGdldCgxLDEsbixpLGkpPDwnICc7CiAgICAgICAgLy8gY291dDw8J1xuJzsKICAgIH0gICAKICAgIGZvciAoaW50IGk9MTtpPD1xO2krKykgY291dDw8YW5zW2ldPDwnXG4nOwogICAgcmV0dXJuIDA7Cn0=