#include <bits/stdc++.h>
using namespace std;
#define io ios::sync_with_stdio(0)
const int maxn=5e5+5;
struct tree{
long long l,r;
long long minn;
}tr[maxn<<2];
long long num[maxn];
inline long long ls(long long n){return n<<1;}
inline long long rs(long long n){return n<<1|1;}
inline void up(long long n)
{
tr[n].minn=min(tr[ls(n)].minn,tr[rs(n)].minn);
return;
}
inline void build(long long l,long long r,long long p)
{
tr[p].l=l;tr[p].r=r;
if (l==r)
{
tr[p].minn=num[l];
return;
}
long long mid=(l+r)>>1;
build(l,mid,ls(p));
build(mid+1,r,rs(p));
up(p);
}
inline long long query(long long l,long long r,long long p)
{
if (l<=tr[p].l&&tr[p].r<=r) return tr[p].minn;
long long tot=1e9;
if (tr[ls(p)].r>=l) tot=min(tot,query(l,r,ls(p)));
if (tr[rs(p)].l<=r) tot=min(tot,query(l,r,rs(p)));
return tot;
}
int main() {
io;
long long m,n,l[maxn],r[maxn];
cin>>m>>n;
for (long long i=1;i<=m;i++) cin>>num[i];
for (long long i=1;i<=n;i++)
{
cin>>l[i]>>r[i];
}
for (long long i=1;i<=n;i++) cout<<query(l[i],r[i],1)<<' ';
return 0;
}