#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[20][100003], N, M, E[100003];
int main() {
fin >> N >> M;
for (int i = 1; i <= N; i++)
fin >> rmq[0][i];
for (int p = 1; (1 << p) <= N; p++) {
for (int i = 1; i <= N; i++) {
rmq[p][i] = rmq[p - 1][i];
int j = i + (1 << (p - 1));
if (j <= N)
rmq[p][i] = min(rmq[p][i], rmq[p - 1][j]);
}
}
E[1] = 0;
for (int i = 2; i <= N; i++)
E[i] = 1 + E[i/2];
for (int q = 0; q < M; q++) {
int x, y;
fin >> x >> y;
int e = E[(y - x + 1)];
int len = (1 << e);
int res = min(rmq[e][x], rmq[e][y - len + 1]);
fout << res << '\n';
}
return 0;
}