#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N, M,i, j, k, i1, i2, A[17][100001], value, minim;
int main()
{
f >> N >> M;
for (i = 1; i <= N; i++)
{
f >> value;
A[0][i]=value; //adaugam pe prima linie valorile date
}
//creem RMQ ul propriu zis
for ( i= 1; (1 << i) <= N; i++)
{
for( j=0; ( j+ ( 1 << i ) -1 ) <= N; j++)
{
A[i][j] = min (A[i-1][j], A[i-1][j+ (1 << (i-1))]);
}
}
//gasim si afisam minimul
for (k =1; k <= M; k++)
{
int length,p;
f >> i1 >>i2;
length = i2 - i1;
p = log2(length);
minim = min( A[p][i1], A[p] [i2 - (1 << p) + 1] );
g << minim << endl;
}
f.close();
g.close();
return 0;
}