#include <bits/stdc++.h>
using namespace std;
ifstream in ("rmq.in");
ofstream out ("rmq.out");
int arb_rmq[400004], n, m, x, y;
inline int interogare(int n, int st, int dr, int x, int y)
{
int st_aux, dr_aux;
dr_aux = st_aux = 1000003;
if (st>=x && dr<=y) return arb_rmq[n];
int mij = (st+dr)>>1;
if (x <= mij) st_aux = interogare(n*2, st, mij, x, y);
if (y > mij) dr_aux = interogare(n*2+1, mij+1, dr, x, y);
return min(dr_aux, st_aux);
}
inline void modificare(int n, int st, int dr, int p, int val)
{
if (st == dr)
{
arb_rmq[n] = val;
return;
}
int mij =(st+dr)>>1;
if (p <= mij) modificare(n*2, st, mij, p, val);
else modificare(n*2+1, mij+1, dr, p, val);
arb_rmq[n] = min(arb_rmq[n*2], arb_rmq[n*2+1]);
}
int main()
{
in>>n>>m;
for (int i = 1; i <= n; ++i)
{
in>>x;
modificare(1, 1, n, i, x);
}
for (int i = 0; i < m; ++i)
{
in>>x>>y;
out<<interogare(1, 1, n, x, y)<<"\n";
}
return 0;
}