#include <stdio.h>
#include <iostream>
using namespace std;
int equal(int v[100010], int st, int dr, int x) {
while(st <= dr) {
int mij = st + (dr - st) / 2;
if(v[mij] == x && v[mij+1] != x)
return mij;
if(v[mij] == x || v[mij] < x)
st = mij + 1;
else
dr = mij - 1;
}
return -1;
}
int lower(int v[100010], int st, int dr, int x) {
if(st > dr)
return dr;
int mij = st + (dr - st) / 2;
if(v[mij] <= x && v[mij+1] > x)
return mij;
else
if(v[mij] <= x) {
return lower(v, mij + 1, dr, x);
}
else
return lower(v, st, mij - 1, x);
}
int great(int v[100010], int st, int dr, int x) {
if(st > dr)
return dr;
int mij = st + (dr - st) / 2;
if(v[mij] >= x && v[mij-1] < x) {
return mij;
}
else
if(v[mij] < x) {
return great(v, mij + 1, dr, x);
}
else {
return great(v, st, mij - 1, x);
}
}
int main() {
int n, v[100010], m, operatie, numar;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d", &n);
for(int i = 0; i < n; i++) {
scanf("%d", &v[i]);
}
scanf("%d", &m);
for(int i = 0; i < m; i++) {
scanf("%d%d", &operatie, &numar);
if(operatie == 0) {
int aux = equal(v, 0, n - 1, numar);
if(aux != -1)
printf("%d\n", aux + 1);
else
printf("-1\n");
continue;
}
if(operatie == 1) {
printf("%d\n", lower(v, 0, n - 1, numar) + 1);
continue;
}
if(operatie == 2) {
printf("%d\n", great(v, 0, n - 1, numar) + 1);
}
}
return 0;
}