/*RMQ算法(ST) 求指定区间最小(大)值*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
int f[100000][20];//f[i][j]表示从第i个数开始,往后数2^j个数中的最值
void init()//初始化f数组
{
for(int j=1; (1<<j)<=n; j++) //1<<j=2^j
for(int i=1; i+(1<<j)-1<=n; i++)
f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);//最小值
//f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);//最大值
}
int RMQ(int x,int y)//查询[x,y]
{
int k=log(y-x-1)/log(2);
return min(f[x][k],f[y-(1<<k)+1][k]);
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
cin>>f[i][0];
init();
for(;;)//在线查询
{
int x,y;
cin>>x>>y;
cout<<RMQ(x,y)<<endl;
}
return 0;
}