using namespace std;
#include <algorithm>
#include <cstdio>
#define DIM 8192
#define common \
int m=(l+r)>>1, L=n<<1, R=L+1
char ax[DIM];
int poz;
int H[300001];
int a[100001];
inline void cit(int &x)
{
x=0;
while(ax[poz]<'0' || ax[poz]>'9')
if(++poz==DIM) fread(ax, 1, DIM, stdin), poz=0;
while(ax[poz]>='0' && ax[poz]<='9')
{
x=x*10+ax[poz]-'0';
if(++poz==DIM) fread(ax, 1, DIM, stdin), poz=0;
}
}
inline void build(int n, int l, int r)
{
if(l==r) { H[n]=a[l];return;}
common;
build(L, l,m); build(R, m+1, r);
H[n]=min(H[L], H[R]);
}
inline int query(int n, int l, int r, int ql,int qr)
{
if(l==ql && r==qr) return H[n];
common;
int sol=0x3f3f3f3f;
if(ql<=m) sol=min(sol, query(L, l,m, ql, min(qr, m)));
if(qr>m) sol=min(sol, query(R,m+1, r, max(ql, m+1), qr));
return sol;
}
inline void scrie(int x)
{
char ax[30], *s;
s=ax+29;s[0]=0;
int cat;
do
{
cat=x/10;
--s;
s[0]=x-cat*10+'0';
x=cat;
}while(x);
puts(s);
}
int main()
{
int n, m,i, p,q;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
cit(n); cit(m);
for(i=1;i<=n;++i) cit(a[i]);
build(1, 1, n);
while(m--)
{
cit(p);cit(q);
scrie(query(1, 1, n, p, q));
// printf("%d\n", query(1, 1, n, p, q));
}
return 0;
}