#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int inf=2000000000;
int n, m, v[400005], c, a, b;
void up(int x, int y, int d, int p, int r)
{
if (x==y)
{
v[d]=r;
return;
}
int mij=(x+y)/2;
if (p<=mij)
{
up(x, mij, d*2, p, r);
}
else
{
up(mij+1, y, d*2+1, p, r);
}
v[d]=min(v[d*2], v[d*2+1]);
}
int que(int x, int y, int d, int a, int b)
{
if (a<=x && b>=y)
{
return v[d];
}
int mij=(x+y)/2, r1=inf, r2=inf;
if (a<=mij)
{
r1=que(x, mij, d*2, a, b);
}
if (b>=mij+1)
{
r2=que(mij+1, y, d*2+1, a, b);
}
return min(r1, r2);
}
int main()
{
cin >> n >> m;
for(int i=1; i<=n; i++)
{
cin >> a;
up(1, n, 1, i, a);
}
for (int i=1; i<=m; i++)
{
cin >> a >> b;
cout << que(1, n, 1, a, b) << '\n';
}
return 0;
}