#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int LMAX = 1e5 + 7;
int rmq[20][LMAX];
int power[LMAX];
int n, m;
void calcularePutere()
{
power[1] = 0;
for (int i = 2; i <= n; i++)
power[i] = power[i / 2] + 1;
}
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++)
{
int j = i + (1 << (p - 1));
if (j <= n && rmq[p - 1][i] >= rmq[p - 1][j])
rmq[p][i] = rmq[p - 1][j];
else
rmq[p][i] = rmq[p - 1][i];
}
calcularePutere();
for(int q = 1; q <= m; q++)
{
int left, right;
fin >> left >> right;
int putere = power[left];
int length = 1 << putere;
fout << min(rmq[putere][left], rmq[putere][right - length + 1]) << "\n";
}
return 0;
}