#include <iostream>
#include <stdio.h>
#define oo 0x3f3f3f3f
#define nn 400005
using namespace std;
int n,m, arb[nn], minn;
void update(int poz, int val, int nod, int st, int dr)
{
if(st==dr)
arb[nod] = val;
else
{
int mij = (st+dr)/2;
if(poz <= mij) update(poz,val, 2*nod, st, mij);
else update(poz,val, 2*nod+1, mij+1, dr );
arb[nod] = min(arb[2*nod], arb[2*nod+1]);
}
}
void search(int X, int Y, int nod, int st, int dr)
{
if(X <= st && dr <= Y)
minn = min(minn, arb[nod]);
else
{
int mij=(st+dr)/2;
if( X <= mij ) search(X,Y, 2*nod, st, mij);
if( mij < Y ) search(X,Y, 2*nod+1, mij+1, dr );
}
}
int main()
{
freopen ("rmq.in","r",stdin);
freopen ("rmq.out","w",stdout);
int x,y,a;
scanf("%d %d", &n, &m);
for(int i=1;i<=n;++i)
scanf("%d", &a),
update(i,a,1,1,n);
for(int i=0;i<m;++i){
scanf("%d %d", &x, &y);
minn = oo;
search(x,y,1,1,n);
printf("%d\n", minn);
}
return 0;
}