#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, x, y, v[100001], a[100001][17], log[100001];
void init()
{
int i;
log[1] = 0;
for (i=2; i<=n; i++)
log[i] = log[(i>>1)] + 1;
}
void minim(int i, int j)
{
int m = j - i + 1;
int k = log[m];
if (a[i][k] <= a[j-(1<<k)+1][k])
g << a[i][k] <<endl;
else g << a[j-(1<<k)+1][k] <<endl;
}
void init2()
{
int i, j;
for(i=1; i<=n; i++)
{
f >> v[i];
a[i][0] = v[i];
}
for (i=1; i<=17; i++)
for(j=1; j+(1<<i)-1 <= n; j++)
if (a[j][i-1] <= a[j+(1<<(i-1))][i-1])
a[j][i] = a[j][i-1];
else
a[j][i] = a[j+(1<<(i-1))][i-1];
}
void f1()
{
int i;
for(i=1; i<=m; i++)
{
f >> x>> y;
minim(x, y);
}
}
int main()
{
f >> n >> m;
init();
init2();
f1();
return 0;
}