#include<cstdio>
#include<algorithm>
#include<cmath>
#include<set>
#define int long long
using namespace std;
set<int>t;
int a[500001],pos[500001],res,num[500001];
struct Q
{
int l,r,k;
}q[500001];
void Add(int n) {t.insert(a[n]);}
void Sub(int n) {t.erase(a[n]);}
bool comp(const Q x,const Q y) {return pos[x.l]==pos[y.l]?x.r<y.r:pos[x.l]<pos[y.l];}
signed main()
{
int n,m;
scanf("%lld%lld",&n,&m);
int size=sqrt(n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]),pos[i]=i/size;
for(int i=1;i<=m;i++)
{
scanf("%lld%lld",&q[i].l,&q[i].r);
q[i].k=i;
}
sort(q+1,q+m+1,comp);
int l=0,r=0;
for(int i=1;i<=m;i++)
{
while(q[i].l<l) Add(--l);
while(q[i].r>r) Add(++r);
while(q[i].l>l) Sub(l++);
while(q[i].r<r) Sub(r--);
num[q[i].k]=*t.begin();
}
for(int i=1;i<=m;i++)printf("%lld ",num[i]);
return 0;
}
不过没过,只混了六十分QAQ