#include <fstream>
#define DIM 100010
using namespace std;
ifstream fin ("rmq.in" );
ofstream fout("rmq.out");
int d[DIM][30], v[30], a, b, mid, aux;
int n, i, j, k, ok, x, m, val, y, z;
int min(int a, int b){
if(a < b)
return a;
else
return b;
}
int main(){
fin >> n >> m; v[0] = 1;
for(i = 1; i <= n; i ++)
fin >> d[0][i];
for(i = 1, k = 1; k <= n; i ++, k *= 2){
v[i] = k * 2;
for(j = 1; j <= n; j ++)
if(j + k <= n)
d[i][j] = min(d[i-1][j], d[i-1][j+k]);
else
d[i][j] = min(d[i-1][j], d[i-1][j+0]);
}
val = i - 1;
for(i = 1; i <= m; i ++){
fin >> x >> y;
if(x > y){
aux = x;
x = y;
y = aux;
}
if(x == y)
fout << d[0][x] << '\n';
else{
z = y - x + 1;
a = 0;b = val;
while(a <= b){
mid = (a + b) / 2;
if(v[mid] <= z)
a = mid + 1;
else
b = mid - 1;
}
mid = b;
fout << min(d[mid][x], d[mid][y - v[mid] + 1]);
fout << '\n';
}
}
return 0;
}