#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 100005;
int a[NMAX];
int p2[NMAX];
int nr2[NMAX];
int v[NMAX][40];
int main() {
int n, m;
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
v[i][0] = a[i];
}
int put = 0;
int put2 = 1;
for(int i = 1; i <= n; ++i) {
if(i >= 2 * put2) {
put2 *= 2;
++put;
}
nr2[i] = put2;
p2[i] = put;
}
for(int l = 1, j = 1; l <= n; l *= 2, ++j) {
for(int i = 1; i <= n - l; ++i) {
v[i][j] = min(v[i][j - 1], v[i + l][j - 1]);
}
}
for(int nrq = 0; nrq < m; ++nrq) {
int x, y;
scanf("%d%d", &x, &y);
int k = p2[y - x + 1];
int sol = min(v[x][k], v[y - nr2[y - x + 1] + 1][k]);
printf("%d\n", sol);
}
return 0;
}