#include <fstream>
#include <cmath>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n, q, lg;
int v[100005];
int rmq[20][100005];
int query(int st, int dr)
{
/*if(st > dr)
{
swap(st, dr);
}*/
int l = log2(dr - st + 1);
return min(rmq[l][st], rmq[l][dr - (1 << l) + 1]);
}
int main()
{
in>>n>>q;
for(int i = 1; i<=n; i++)
{
in>>v[i];
}
lg = log2(n);
for(int i = 1; i<=n; i++)
{
rmq[0][i] = v[i];
}
for(int i = 1; i<=lg; i++)
{
for(int j = 1; j<=n - (1 << i) + 1; j++)
{
rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]);
}
}
int st, dr;
while(q--)
{
in>>st>>dr;
out<<query(st, dr)<<'\n';
}
return 0;
}