#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int cautare(int x, int v[], int ps, int pd, int h, int var){
if(!var){
return h+1;
}
int mijloc;
if(var && ps!=pd){
mijloc = (ps + pd)/2;
if(v[mijloc]==x){
var = 1;
h = mijloc;
cautare(x, v, mijloc, mijloc+2, h, 1);
}else{
var = 0;
if(v[mijloc]>x){
cautare(x, v, ps, mijloc-1, h, 0);
}else{
cautare(x, v, mijloc+1, pd, h, 0);
}
}
}
}
int cautare2(int x, int v[], int ps, int pd, int h, int var){
if(!var){
return h+1;
}
int mijloc;
if(var && ps!=pd){
mijloc = ps + (pd - ps)/2;
if(v[mijloc]==x){
var = 1;
h = mijloc;
cautare2(x, v, mijloc, mijloc-2, h, 1);
}else{
var = 0;
if(v[mijloc]>x){
cautare2(x, v, ps, mijloc-1, h, 0);
}else{
cautare2(x, v, mijloc+1, pd, h, 0);
}
}
}
}
int v[100000], N, M, x, tip;
int main(){
f >> N;
for(int i = 0; i < N; i++){
f >> v[i];
}
f >> M;
while(M--){
f >> tip >> x;
if(tip == 0){
g << cautare(x, v, 0, N-1, -2, 2) << "\n";
}else if(tip == 1){
int y = cautare(x, v, 0, N-1, -2, 2);
while(y==-1){
x--;
y = cautare(x, v, 0, N-1, -2, 2);
}
g << y << "\n";
}else{
int z = cautare2(x, v, 0, N-1, -2, 2);
while(z==-1){
x--;
z = cautare2(x, v, 0, N-1, -2, 2);
}
g << z << "\n";
}
}
}