#include<fstream>
#include<cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int inf=1<<30;
int v[1700000];
void insertarb(int pz,int val, int lf, int rh,int n){
if(lf==rh){v[n]=val;return;}
int mij=(lf+rh)/2;
if(pz<=mij)insertarb(pz,val,lf,mij,n<<1);
else insertarb(pz,val,mij+1,rh,(n<<1)+1);
v[n]=min(v[n<<1],v[(n<<1)+1]);
};
int querry(int a,int b, int lf, int rh, int n){
if(a<=lf&&b>=rh)return v[n];
int mij=(lf+rh)/2;
int nd=inf,ns=inf;
if(a<=mij)ns=querry(a,b,lf,mij,n<<1);
if(b>=mij+1)nd=querry(a,b,mij+1,rh,(n<<1)+1);
return min(nd,ns);
}
int main(){
int n,m,i,x,p,a,b;
fin>>n>>m;
p=n*(log(n)+1);
for(i=1;i<=p;i++)
v[i]=inf;
for(i=1;i<=n;i++){
fin>>x;
insertarb(i,x,1,n,1);
}
for(i=1;i<=m;i++){
fin>>a>>b;
fout<<querry(a,b,1,n,1)<<'\n';
}
fin.close();
fout.close();
return 0;
}