#include<iostream>
using namespace std;
#define NMAX 100001
#define LGMAX 18
int n,rmq[LGMAX][NMAX],_lg2[NMAX];
signed main(){
#ifndef LOCAL
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
#endif // LOCAL
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int q;
cin>>n>>q;
_lg2[0]=-1;
for(int i=1;i<=n;++i){
cin>>rmq[0][i];
_lg2[i]=_lg2[i>>1]+1;
}
for(int k=1;(1<<k)<=n;++k){
for(int i=1;i+(1<<k)-1<=n;++i){
rmq[k][i]=min(
rmq[k-1][i],
rmq[k-1][i+(1<<(k-1))]
);
}
}
for(;q;--q){
int x,y;
cin>>x>>y;
if(x>y)swap(x,y);
int l=_lg2[y-x+1];
cout<<min(
rmq[l][x],
rmq[l][y-(1<<l)+1]
)<<"\n";
}
return 0;
}