#include<stdio.h>
#define MaxN 100005
int M, N, v[MaxN];
/*int search (int p, int u, int key) {
int m;
while (p <= u) {
m = (p + u) / 2;
if (v[m] <= key)
p = m + 1;
else
u = m - 1;
}
m = (p + u) / 2;
if (v[m] > key) m --;
if (v[m] == key)
return m;
return -1;
}*/
int search(int li, int ls, int x){
int mid;
if(li > ls){
mid = (li + ls) / 2;
if(v[mid] > x)
mid--;
if( v[mid] == x)
return mid;
else
return -2;
}
else{
mid = (li+ls)/2;
if(x >= v[mid])
return search(mid+1, ls, x);
else
return search(li, mid - 1, x);
}
}
int search1(int li, int ls, int x){
int mid;
if(li == ls){
mid = (li + ls)/2;
if(x < v[mid])
mid--;
return mid;
}
else{
mid = (li+ls)/2;
if(x >= v[mid])
return search1(mid+1, ls, x);
else
return search1(li, mid, x);
}
}
int search2(int li, int ls, int x){
int mid;
if(li == ls){
mid = (li + ls)/2;
if(x > v[mid])
mid++;
return mid;
}
else{
mid = (li+ls)/2;
if(x > v[mid])
return search2(mid+1, ls, x);
else
return search2(li, mid, x);
}
}
int main(){
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int i, poz, op, x, j;
scanf("%d", &N);
for(i = 0; i < N; i++)
scanf("%d", &v[i]);
scanf("%d", &M);
for(i = 0; i < M; i++){
scanf("%d %d", &op, &x);
poz = search(0, N-1, x);
switch (op){
case 0: /*if(poz == -1){
printf("%d\n", poz);
break;
}
j = poz;
while(v[j] == x && j < N)
j++;
printf("%d\n", j);*/
printf("%d\n", 1+search(0, N-1, x));
break;
case 1: /*while(poz == -1){
x--;
poz = search(0, N-1, x);
}
j = poz;
while(v[j] == x && j < N)
j++;
printf("%d\n", j);*/
printf("%d\n", 1+search1(0, N-1, x));
break;
case 2: /*while(poz == -1){
x++;
poz = (search(0, N-1, x));
}
j = poz;
while(v[j] == x && j >= 0)
j--;
printf("%d\n", j + 2);*/
printf("%d\n", 1+search2(0, N-1, x));
break;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}