#include <iostream>
#include <fstream>
#include <cmath>
#define NMAX 100001
#define NMAXLOGN 20
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N, M, i, k, j, leftva, rightva;
int a[NMAX];
int rmq[NMAX][NMAXLOGN];
int main()
{
fin >> N >> M;
for(i=1; i<=N; i++)
fin >> a[i];
for( i=1;i <=N; i++)
rmq[i][0] = i;
for(j=1; 1<<j <= N; j++)
for(i=1; i+(1<<j)-1<=N; i++)
{
k = 1 << (j-1);
if(a[rmq[i][j-1]] <=a[rmq[i+k][j-1]])
rmq[i][j] = rmq[i][j-1];
else
rmq[i][j] = rmq[i+k][j-1];
}
for(i=0; i<M; i++)
{
fin >> leftva >> rightva;
k = log2(rightva - leftva +1);
if(a[rmq[leftva][k]] < a[rmq[rightva - (1<<k)+1][k]])
fout << a[rmq[leftva][k]] << '\n';
else
fout << a[rmq[rightva- (1<<k)+1][k]] << '\n';
}
}