code:
#include<bits/stdc++.h>
using namespace std;
int f[111111][21];
//f[i][j]=max(a[i-->(1<<j)])
int lg[111111],n,m,l,r;
void LOG(){
lg[1]=0,lg[2]=1;
for(register int i=3;i<=n;++i){
lg[i]=lg[i<<1]+1;
}
}
int main(){
cin>>n>>m;
LOG();
for(int i=1;i<=n;i++)cin>>f[i][0];
for(int j=1;j<=21;j++){
for(int i=1;i+(1<<j)-1<=n;i++){
f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
}
for(int i=1;i<=m;i++){
cin>>l>>r;
int LG=lg[r-l+1];
int ans=min(f[l][LG],f[r-(1<<LG)+1][LG]);
cout<<ans<<' ';
}
return 0;
}