#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int t[400005],v[100005];
void update(int nod,int l,int r,int poz,int val)
{
if(l==r)
{
t[nod]=val;
return;
}
int m=(l+r)/2;
if(poz<=m)
update(2*nod,l,m,poz,val);
else
update(2*nod+1,m+1,r,poz,val);
t[nod]=min(t[2*nod],t[2*nod+1]);
}
int query(int nod,int l,int r,int a,int b)
{
if(a<=l && r<=b)
return t[nod];
int m=(l+r)/2,rl=1e9,rr=1e9;
if(a<=m)
rl=query(2*nod,l,m,a,b);
if(m<b)
rr=query(2*nod+1,m+1,r,a,b);
return min(rl,rr);
}
int main()
{
//ios_base::sync_with_stdio(false);
//cin.tie(NULL);
int n,q;
in>>n>>q;
memset(t,1e9,sizeof(t));
for(int i=1;i<=n;i++)
{
in>>v[i];
update(1,1,n,i,v[i]);
}
while(q--)
{
int x,y;
in>>x>>y;
out<<query(1,1,n,x,y)<<"\n";
}
return 0;
}