#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 100005;
int RMQ[N][20], v[1000];
void build_rmq(int n) {
for (int i = 0; i < n; ++i) {
RMQ[i][0] = v[i];
}
for (int j = 1; (1 << j) <= n; ++j) {
int k = 1 << j;
for (int i = 0; i <= n - k; ++i) {
RMQ[i][j] = min(RMQ[i][j - 1], RMQ[i + (1 << (j - 1))][j - 1]);
}
}
}
int query(int i, int j) {
int k = log2(j - i + 1);
return min(RMQ[i][k], RMQ[j - (1 << k) + 1][k]);
}
ifstream f("rmq.in");
ofstream g("rmq.out");
int main() {
int n, q;
f >> n >> q;
for (int i = 0; i < n; ++i) {
f >> v[i];
}
build_rmq(n);
for (int i = 0; i < q; ++i) {
int x, y;
f >> x >> y;
--x, --y;
g << query(x, y) << '\n';
}
return 0;
}