// C++ program for range minimum
#include <bits/stdc++.h>
using namespace std;
int v[100005],rmq[262144];
int RMQUtil(int st, int dr, int qst, int qdr, int index)
{
if (qst<=st && qdr>=dr)
return rmq[index];
if (dr<qst || st>qdr)
return INT_MAX;
int mid=st+(dr-st)/2;
return min(RMQUtil(st, mid, qst, qdr, 2*index+1),RMQUtil(mid+1, dr, qst, qdr, 2*index+2));
}
int contructRMQuntil(int st, int dr, int si)
{
if (st==dr)
{
rmq[si] = v[st];
return v[st];
}
int mid=st+(dr-st)/2;
rmq[si]=min(contructRMQuntil(st, mid, si*2+1),contructRMQuntil(mid+1, dr, si*2+2));
return rmq[si];
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n,i,qu;
scanf("%d%d",&n,&qu);
for(i=0;i<n;++i)
scanf("%d",&v[i]);
contructRMQuntil(0,n-1,0);
int qst,qdr;
while(qu--)
{
scanf("%d %d",&qst,&qdr);
printf("%d\n",RMQUtil(0, n-1, qst-1, qdr-1, 0));
}
return 0;
}