#include <iostream>
#include <fstream>
using namespace std;
int N,arr[100001],sgt[100001],V,E,op,num1,num2,Q;
void buildsgt(int l,int r,int curr)
{
if(l==r){
sgt[curr]=arr[r];
return;
}
int mid=l+(r-l)/2;
buildsgt(l,mid,curr*2);
buildsgt(mid+1,r,curr*2+1);
sgt[curr]=min(sgt[curr*2],sgt[curr*2+1]);
}
int query(int l,int r,int curr,int x,int y)
{
if(y<l || x>r )
return 999999999;
if(l>=x && r<=y)
return sgt[curr];
int mid=l+(r-l)/2;
int sol=query(l,mid,curr*2,x,y);
int sol2=query(mid+1,r,curr*2+1,x,y);
return min(sol,sol2);
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
cin>>V>>Q;
for(int i=1;i<=V;i++)
cin>>arr[i];
//for(int i=1;i<=20;i++)
// cout<<sgt[i];
buildsgt(1,V,1);
// for(int i=1;i<=20;i++)
//cout<<sgt[i];
while(Q--)
{
cin>>num1>>num2;
cout<<query(1,V,1,num1,num2)<<"\n";
}
return 0;
}