#include <fstream>
using namespace std;
ifstream is ("rmq.in");
ofstream os ("rmq.out");
int N, Q;
int R[20][100001], Log[100001];
int main()
{
is >> N >> Q;
for (int i = 2; i <= N; ++i)
Log[i] = Log[i/2]+1;
for (int i = 1; i <= N; ++i)
is >> R[0][i];
for (int i = 1; (1<<i) <= N; ++i)
for (int j = 1; j + (1<<i)-1 <= N; ++j)
R[i][j] = min(R[i-1][j], R[i-1][j+(1<<(i-1))]);
for (int i = 1, L, a, b; i <= Q; ++i)
{
is >> a >> b;
if (a > b) swap(a, b);
L = Log[b - a + 1];
os << min(R[L][a], R[L][b - (1 << L) + 1]) << '\n';
}
is.close();
os.close();
}