#include <iostream>
#define lc p << 1
#define rc p << 1 | 1
#define int long long
using namespace std;
const int N = 100005;
int n, m, w[N], x, y;
int minn[N * 4];
void pushup(int p) {
minn[p] = min(minn[lc], minn[rc]);
}
void build(int p, int l, int r) {
minn[p] = w[l];
if (l == r) {
return;
}
int mid = (l + r) >> 1;
build(lc, l, mid), build(rc, mid + 1, r);
pushup(p);
}
int query(int p, int x, int y, int l, int r) {
if (x > r || y < l) return 1e9;
if (x <= l && r <= y) {
return minn[p];
}
int mid = (l + r) >> 1;
return min(query(lc, x, y, l, mid), query(rc, x, y, mid + 1, r));
}
signed main() {
cin >> m >> n;
for (int i = 1; i <= m; i++) {
cin >> w[i];
}
build(1, 1, n);
for (int i = 0; i < n; i++) {
cin >> x >> y;
cout << query(1, x, y, 1, n) << ' ';
}
return 0;
}