#include<bits/stdc++.h>
#define ll long long
#define f(i,a,b,n) for(int i=a;i<=b;i+=n)
#define ff(i,a,b,n) for(int i=a;i>=b;i-=n)
#define fv(i,m) for(int i=0;i<m.size();i++)
#define fb(i,m) for(int i=m;i;i-=i&(-i))
#define gm(a,b) a=max(a,b)
#define ms(a,b) memset(a,b,sizeof(a))
#define mc(a,b) memcpy(a,b,sizeof(b))
#define mp(a,b) make_pair(a,b)
#define _1 first
#define _2 second
#define TT template<typename T>
using namespace std;
int n,m,l,r,Z,t,qian[320][320],hou[320][320],zhen[320][320],in[320][51200],k[320][320];
pair<int,int> id[102400];
inline int read(){
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9') {x=x*10+ch-48;ch=getchar();}
return x*f;
}
int main(){
n=read(),m=read();
Z=ceil(sqrt(n));
f(i,1,Z*Z,1) id[i]=mp((i-1)/Z+1,(i-1)%Z+1);
f(i,1,Z,1) f(j,i,Z,1) k[i][j]=++t;
f(i,1,n,1) in[id[i]._1][k[id[i]._2][id[i]._2]]=read();
f(i,n+1,Z*Z,1) in[id[i]._1][k[id[i]._2][id[i]._2]]=INT_MAX;
f(i,1,Z,1){
qian[i][1]=in[i][k[1][1]],hou[i][Z]=in[i][k[Z][Z]];
f(j,2,Z,1) qian[i][j]=min(qian[i][j-1],in[i][k[j][j]]);
ff(j,Z-1,1,1) hou[i][j]=min(hou[i][j+1],in[i][k[j][j]]);
zhen[i][i]=qian[i][Z];
f(o,1,Z-1,1) f(p,o+1,Z,1) in[i][k[o][p]]=min(in[i][k[o][p-1]],in[i][k[p][p]]);
}
f(i,1,Z-1,1) f(j,i+1,Z,1) zhen[i][j]=max(zhen[i][j-1],zhen[j][j]);
while(m--){
l=read(),r=read();
if(id[l]._1==id[r]._1) printf("%d ",in[id[l]._1][k[id[l]._2][id[r]._2]]);
else if(id[l]._1+1==id[r]._1) printf("%d ",min(hou[id[l]._1][id[l]._2],qian[id[r]._1][id[r]._2]));
else printf("%d ",min(min(hou[id[l]._1][id[l]._2],qian[id[r]._1][id[r]._2]),zhen[id[l]._1+1][id[r]._1-1]));
}
return 0;
}
@zhoumurui抱歉不太懂社区规则