#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
long long cautare(long long x, long long v[], int ps, int pd, long long 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;
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);
}
}
}
}
long long cautare2(long long x, long long v[], int ps, int pd, long long 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);
}
}
}
}
long long 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);
}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;
}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;
}
if(M > 1){
cout << "\n";
}
}
}