#include <cstdio>
long long v[100005];
int search0 (int l, int r, int k){
int mid=(l+r)/2;
if (r-l>1){
if (k<v[mid]) return search0 (l, mid, k);
else return search0 (mid, r, k);}
if (l==-1 || v[l]!=k) return -1;
else return l;
}
int search1 (int l, int r, int k){
int mid=(l+r)/2;
if (r-l>1){
if (k<v[mid]) return search1 (l, mid, k);
else return search1 (mid, r, k);
}
return r;
}
int search2 (int l, int r, int k){
int mid=(l+r)/2;
if (r-l>1){
if (k>=v[mid]) return search2 (mid, r, k);
else return search2 (l, mid, k);
}
return l;
}
int main (){
freopen ("cautbin.in", "r", stdin);
freopen ("cautbin.out", "w", stdout);
int n, m;
scanf ("%d", &n);
for (int i=1; i<=n; i++)
scanf ("%lld", &v[i]);
scanf ("%d", &m);
int q, k;
for (int i=1; i<=m; i++){
scanf ("%d %d", &q, &k);
if (q==0) printf ("%d\n", search0 (0, n+1, k));
if (q==1) printf ("%d\n", search1 (0, n+1, k));
if (q==2) printf ("%d\n", search2 (0, n+1, k));
}
return 0;
}