#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int NMAX = 1e5;
const int LOGMAX = 20;
int rmq[NMAX][LOGMAX];
void preprocesare(int a[], int n) {
for (int i = 0; i < n; i++) {
rmq[i][0] = a[i];
}
for (int j = 1; j <= log2(n); j++) {
for (int i = 0; i < n; i++) {
if (i + (1 << j) <= n) {
rmq[i][j] = min(rmq[i][j-1], rmq[i+(1<<(j-1))][j-1]);
}
}
}
}
int interogare(int st, int dr) {
int putere = log2(dr-st+1);
return min(rmq[st][putere], rmq[dr-(1<<(putere))+1][putere]);
}
int main() {
int n, m;
in >> n >> m;
int a[n];
for (int i = 0; i < n; i++) {
in >> a[i];
}
preprocesare(a, n);
for (int i = 0; i < m; i++) {
int x, y;
in >> x >> y;
out << interogare(x-1, y-1) << '\n';
}
return 0;
}