#include <bits/stdc++.h>
#define NMAX 100000+5
using namespace std;
int n, m, v[NMAX];
int cerinta0(int st, int dr, int cautat, int sol) {
if(st > dr)
return sol;
int mid = (st+dr)/2;
if(v[mid] == cautat)
return cerinta0(mid+1, dr, cautat, mid);
if(v[mid] > cautat)
return cerinta0(st, mid-1, cautat, sol);
///if(v[mid] < cautat)
return cerinta0(mid+1, dr, cautat, sol);
}
int cerinta1(int st, int dr, int cautat, int sol) {
if(st > dr)
return sol;
int mid = (st+dr)/2;
if(v[mid] <= cautat)
return cerinta1(mid+1, dr, cautat, mid);
///if(v[mid] > cautat)
return cerinta1(st, mid-1, cautat, sol);
}
int cerinta2(int st, int dr, int cautat, int sol) {
if(st > dr)
return sol;
int mid = (st+dr)/2;
if(v[mid] >= cautat)
return cerinta2(st, mid-1, cautat, mid);
///if(v[mid] < cautat)
return cerinta2(mid+1, dr, cautat, sol);
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d", &v[i]);
scanf("%d", &m);
for(int i = 1; i <= m; ++i) {
int c, x;
scanf("%d%d", &c, &x);
if(c == 0) {
printf("%d\n", cerinta0(0, n, x, -1));
continue;
}
if(c == 1) {
printf("%d\n", cerinta1(0, n, x, -1));
continue;
}
if(c == 2) {
printf("%d\n", cerinta2(0, n, x, -1));
continue;
}
}
return 0;
}