#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
const int nmax=4e5+3;
const int inf=2e9+3;
using namespace std;
int t[nmax];
void build(int a[],int v,int st,int dr)
{
if(st==dr) t[v]=a[st]; else
{
int mid=(st+dr)/2;
build(a,v*2,st,mid);
build(a,v*2+1,mid+1,dr);
t[v]=min(t[v*2],t[v*2+1]);
}
}
void update(int v,int st,int dr,int pos,int val)
{
if(st==dr) t[v]=val; else
{
int mid=(st+dr)/2;
if(pos<=mid)
update(v*2,st,mid,pos,val); else
update(v*2+1,mid+1,dr,pos,val);
t[v]=min(t[v*2],t[v*2+1]);
}
}
int get_min(int v,int st,int dr,int l,int r)
{
if(st>r || dr<l) return inf;
if(st>=l && dr<=r) return t[v];
int mid=(st+dr)/2;
return min(get_min(v*2,st,mid,l,r),get_min(v*2+1,mid+1,dr,l,r));
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n,m;
cin>>n>>m;
//for(int i=0;i<nmax;i++) t[i]=inf;
int a[n];
for(int i=0;i<n;i++) cin>>a[i];
build(a,1,0,n-1);
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
cout<<get_min(1,0,n-1,a-1,b-1)<<"\n";
}
}