#include using namespace std; const int maxn = 100 * 1000, maxlog=20, inf = 1000 * 1000 * 1000; int A[maxn], B[maxn][maxlog], n; void preprocess() { for(int i = 0; i < n ; i++) B[i][0]=A[i]; for(int j = 1; j < maxlog ; j++) for(int i = 0; i < n ; i++) { if(i + ( 1 << ( j - 1 ) ) < n) B[i][j]=min( B[i][j-1], B[i + ( 1 << ( j - 1 ) )][j-1] ); else B[i][j] = B[i][j-1]; } } int MIN(int l, int r, int k) { if(l >= r || k < 0) return inf; if(l + (1 << k) <= r) return min( B[l][k], MIN(l + (1 << k), r, k-1) ); else return MIN(l, r, k-1); } int query(int L, int R) { return MIN(L, R, maxlog-1); } int main() { cin >> n; for(int i = 0 ; i < n ; i++) cin >> A[i]; preprocess(); int m; cin >> m; for(int i = 0 ; i < m ; i++) { int L, R; cin >> L >> R; cout << query ( L, R ); } return 0; }