#include<bits/stdc++.h>
using namespace std;
#define FOR(i,j,k) for(int i=(j);i<=(k);i++)
#define ROF(i,j,k) for(int i=(j);i>=(k);i--)
#define id(j) isdigit(j)
#define rd(n) n=read();
#define il inline
int read(){
int x=0,f=1;char ch=getchar();
while(!id(ch)){if(ch=='-')f=0;ch=getchar();}
while(id(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return f? x:~(x-1);
}
int m,n,op[150010],tr[150010];
il int ls(int p){
return p<<1;
}
il int rs(int p){
return p<<1|1;
}
void push_up(int p){
tr[p]=min(tr[ls(p)],tr[rs(p)]);
}
void build(int p,int l,int r){
if(l==r){
tr[p]=op[l];
return ;
}
int mid=(l+r)>>1;
build(ls(p),l,mid);
build(rs(p),mid+1,r);
push_up(p);
}
int query(int p,int x,int y,int l,int r){
int tol=1001001;
if(x<=l&&r<=y){
return tr[p];
}
int mid=(l+r)>>1;
if(x<=mid) tol=min(tol,query(ls(p),x,y,l,mid));
if(y>mid) tol=min(tol,query(rs(p),x,y,mid+1,r));
return tol;
}
int main(){
rd(m)
rd(n)
FOR(i,1,m){
rd(op[i]);
}
build(1,1,n);
FOR(i,1,n){
int a,b;
rd(a)
rd(b)
cout<<query(1,a,b,1,n)<<' ';
}
return 0;
}