#include <fstream>
#include <limits.h>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout("rmq.out");
const int M=100003;
int n,m,i,v[M],A[4*M],a,b,sol;
void build(int nod,int st,int dr){
if (st==dr)
A[nod]=v[st];
else{
int mid=(st+dr)/2;
build(2*nod,st,mid);
build(2*nod+1,mid+1,dr);
A[nod]=min(A[2*nod],A[2*nod+1]);
}
}
void qr(int nod,int st,int dr,int a,int b){
if (st==dr)
sol=min(sol,A[nod]);
else{
int mid=(st+dr)/2;
if (a<=mid)
qr(2*nod,st,mid,a,b);
if (b>mid)
qr(2*nod+1,mid+1,dr,a,b);
}
}
int main(){
fin>>n>>m;
for (i=1;i<=n;i++)
fin>>v[i];
build(1,1,n);
for (i=1;i<=m;i++){
fin>>a>>b;
sol=INT_MAX;
qr(1,1,n,a,b);
fout<<sol<<'\n';
}
fin.close();
fout.close();
return 0;
}