#include<cstdio>
#include<iostream>
using namespace std;
int cautbin0(int v[100000], int target, int lo, int hi){
int mid = lo + (hi - lo)/2;
if (mid == lo){
if (v[mid] == target)
return mid;
return -1;
}
if(v[mid] <= target){
return cautbin0(v, target, mid, hi);
}else{
return cautbin0(v, target, lo, mid);
}
}
int cautbin1(int v[100000], int target, int lo, int hi){
int mid = lo + (hi - lo)/ 2;
if (mid == lo)
return mid;
if (v[mid] <= target){
return cautbin1(v, target, mid, hi);
}else{
return cautbin1(v, target, lo, mid);
}
}
int cautbin2(int v[100000], int target, int lo, int hi){
int mid = lo + (hi - lo)/2;
if (mid == lo)
return mid + 1;
if (v[mid] < target){
return cautbin2(v, target, mid, hi);
}else{
return cautbin2(v, target, lo, mid);
}
}
int Cautare(int v[100000], int target, int q,int lo, int hi){
if(q == 0){
return cautbin0(v, target, lo, hi);
}
if(q == 1){
return cautbin1(v, target, lo, hi);
}
if(q == 2){
return cautbin2(v, target, lo, hi);
}
}
int main(){
int v[100000];
int target, n, m, q;
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
cin >> n;
for (int i = 0; i < n; i++){
cin >> v[i];
}
cin >> m;
for (int i = 0; i < m; i++){
cin >> q >> target;
cout << Cautare(v, target, q, 0, n-1) + 1 << endl;
}
}