#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int N, M, A[100011];
int cautareClasica(int a[], int dim, int value) {
int i, step;
for (step = 1; step < dim; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < dim && a[i + step] <= value)
i += step;
if (a[i] != value||i>N-1)
return -1;
else
return i + 1;
}
int cautarePozitieMaxima(int a[], int dim, int value) {
int i, step;
for (step = 1; step < dim; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < dim && a[i + step] <= value)
i += step;
return i + 1;
}
int cautarePozitieMinima(int a[], int dim, int value) {
int i, step;
for (step = 1; step < dim; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < dim && a[i + step] <= value - 1)
i += step;
return i + 2;
}
int main() {
fin >> N;
for (int i = 0; i < N; ++i)
fin >> A[i];
fin >> M;
for (int i = 0; i < M; ++i) {
int oper, x;
fin >> oper >> x;
if (oper == 0)
fout << cautareClasica(A, N, x) << "\n";
else if (oper == 1)
fout << cautarePozitieMaxima(A, N, x) << "\n";
else fout << cautarePozitieMinima(A, N, x) << "\n";
}
fin.close();
fout.close();
return 0;
}