#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
class RMQ
{
public:
vector <vector <int>> m_rmq;
int m_size;
int query(int l, int r)
{
int max_pow = 31 - __builtin_clz(r - l + 1);
return min(m_rmq[max_pow][l], m_rmq[max_pow][r - (1 << max_pow) + 1]);
}
void insert_line(int i)
{
int len = (1 << i);
vector <int> ans(m_size - len + 1);
for(int k = 0; k + len - 1 < m_size; k++)
ans[k] = min(query(k, k + (1 << (i - 1)) - 1), query(k + len - (1 << (i - 1)), k + len - 1));
m_rmq.push_back(ans);
}
RMQ(int n, vector <int> &rmq)
{
m_rmq.push_back(rmq);
m_size = n;
for(int i = 1; (1 << i) <= m_size; i++)
{
insert_line(i);
}
}
};
int main()
{
int n, q;
fin>>n>>q;
vector <int> v(n);
for(int i = 0; i < n; i++)
fin>>v[i];
RMQ rmq(n, v);
int x, y;
for(int i = 0; i < q; i++)
{
fin>>x>>y;
fout<<rmq.query(x - 1, y - 1)<<'\n';
}
return 0;
}