#include <iostream>
#include <fstream>
using namespace std;
#define ZERO 1000000000
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N;
int Arr[100001];
int Q;
int table[100001][20];
int k;
int query (int st,int dr)
{
int rez=ZERO;
for (int i=k;i>=0;--i)
{
if (st+(1<<i)-1<=dr)
{
rez=min(rez,table[st][i]);
st=st+(1<<i);
}
}
return rez;
}
int main()
{
fin >> N >> Q;
for (int i=0;i<N;++i)
{
fin >> Arr[i];
table[i][0]=Arr[i];
}
k=0;
for (int j=1;(1<<j)<=N;++j)
{
++k;
for (int i=0;i+(1<<j)<=N;++i)
{
table[i][j]=min(table[i][j-1],table[i+(1<<(j-1))][j-1]);
}
}
for (int i=1;i<=Q;++i)
{
int st,dr;
fin >> st >> dr;
fout << query(st-1,dr-1) << '\n';
}
fin.close();
fout.close();
return 0;
}