#include <bits/stdc++.h>
#define ll long long
#define maxn 100001
#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>
#define vll vector<long long>
using namespace std;
const int inf = INT_MAX;
int a[maxn],t[4*maxn],mid,n,m,x,y;
inline void build(int nod, int l, int r)
{
if(l == r)
t[nod] = a[l];
else
{
mid = (l+r)/2;
build(nod << 1,l,mid);
build(nod << 1 | 1,mid+1,r);
t[nod] = min(t[nod << 1],t[nod << 1 | 1]);
}
}
inline int qry(int nod,int l,int r,int start,int finish)
{
if(l >= start && r <= finish)
return t[nod];
if(l > finish || start > r) return inf;
mid = (l+r)/2;
return min(qry(nod << 1,l,mid,start,finish),qry(nod << 1 | 1,mid+1,r,start,finish));
}
int main(){
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n;
scanf("%d %d",&n,&m);
for(int i = 1;i<=n;i++)
scanf("%d",&a[i]);
build(1,1,n);
for(int q = 1;q<=m;q++)
{
scanf("%d %d",&x,&y);
printf("%d\n", qry(1,1,n,x,y));
}
return 0;
}