#include<iostream>
#include<fstream>
#include<unordered_map>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, v[100001];
class pairHash{
public:
long operator()(const pair<int, int> &k) const{
return k.first * 100 + k.second;
}
};
unordered_map<pair<int,int> , int, pairHash> a;
int main()
{
f>>n>>m;
for(int i=1; i<=n; ++i)
f>>v[i], a[make_pair(i,i)]=v[i];
for(int i=1; i<=n; ++i)
for(int j=i+1; j<=n; ++j){
a[make_pair(i,j)]=min(v[j], a[make_pair(i, j-1)]); //cout<<a[make_pair(i,j)];
}
//
//for(int i=1; i<=n; ++i){
// for(int j=i+1; j<=n; ++j)
// cout<<a[make_pair(i,j)]<<' ';
// cout<<'\n';
//
// }
// cout<<a[2][5];
while(m--){
int i,j;
f>>i>>j;
g<<a[make_pair(i,j)]<<'\n';
}
return 0;
}