#include <bits/stdc++.h>
#define ll long long
#define maxn 200005
#define rc(s) return cout << s,0
#define _ ios_base::sync_with_stdio(false);cin.tie(0);
#define mp make_pair
#define pii pair<int,int>
#define vi vector<int>
using namespace std;
const int inf = INT_MAX;
int n,m,val,pos,x,y,z,start,finish;
int t[420420],a[420420];
void build(int nod, int l , int r)
{
if(l==r) {t[nod] = a[l];return;}
build(nod << 1, l, (l+r)/2);
build(nod << 1 | 1, (l+r)/2+1, r);
t[nod] = min(t[nod << 1] , t[nod << 1 | 1]);
}
int qry(int nod,int tl,int tr,int l,int r)
{
if(l > r) return inf;
if(l== tl && r == tr) return t[nod];
int tm = (tl+tr)/2;
return min(qry(nod << 1, tl , tm, l, min(r,tm)),qry(nod<<1|1,tm+1,tr,max(tm+1,l),r));
}
int main(){
_
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i = 1;i<=n;i++)
scanf("%d",&a[i]);
build(1,1,n);
for(int i = 1;i<=m;i++)
{
scanf("%d %d",&start,&finish);
printf("%d\n",qry(1,1,n,start,finish));
}
return 0;
}