#include <stdio.h>
using namespace std;
FILE *fin = fopen("rmq.in", "r");
FILE *fout = fopen("rmq.out", "w");
int answer[18][1000001];
int minim(int a, int b)
{
if(a <= b) return a;
return b;
}
int cmmp(int a, int b)
{
int incadrez = b-a+1;
int putere = 1;
while(2*putere<=incadrez)
{
putere*=2;
}
return putere;
}
int coef(int a, int b)
{
int incadrez = b-a+1;
int putere = 1;
int rand = 1;
while(2*putere<=incadrez)
{
rand++;
putere*=2;
}
return rand;
}
int main()
{
int n, m;
fscanf(fin , "%d %d", &n, &m);
for(int i =1; i <= n; i++)
{
fscanf(fin , "%d" , &answer[1][i]);
}
int ad=1;
for(int i = 2; i <= 17 ;i++)
{
for(int j = 1; j <= n; j++)
{
if(j+ad <= n)
{
answer[i][j]=minim(answer[i-1][j], answer[i-1][j+ad]);
}
}
ad*=2;
}
int x,y;
for(int i = 1; i <= m; i++)
{
fscanf(fin , "%d%d", &x, &y);
int diametru = cmmp(x , y);
int coeficient = coef(x, y);
fprintf(fout, "%d\n", minim(answer[coeficient][x], answer[coeficient][y-diametru+1]));
}
return 0;
}