#include <bits/stdc++.h>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int imax,imin;
void binarysearch0(int v[],int x,int low,int hi) {
int m;
if(low<=hi) {
m=low + (hi-low)/2;
if(v[m]==x)
if(m>imax)
imax=m;
if(x>=v[m]) binarysearch0(v,x,m+1,hi);
else binarysearch0(v,x,low,m-1);
}
}
void binarysearch1(int v[],int x,int low,int hi) {
int m;
if(low<=hi) {
m=low + (hi-low)/2;
if(v[m]<=x)
if(m>imax)
imax=m;
if(x>=v[m]) binarysearch1(v,x,m+1,hi);
else binarysearch1(v,x,low,m-1);
}
}
void binarysearch2(int v[],int x,int low,int hi) {
int m;
if(low<=hi) {
m=low + (hi-low)/2;
if(v[m]>=x)
if(m<imin)
imin=m;
if(x<=v[m]) binarysearch2(v,x,low,m-1);
else binarysearch2(v,x,m+1,hi);
}
}
int main() {
int n,v[100000],m,x,q;
in>>n;
for(int i=0;i<n;i++)
{
in>>v[i];
}
in>>m;
for(int i=0;i<m;i++)
{
in>>q>>x;
if(q==0){imax=-1;binarysearch0(v,x,0,n-1);if(imax==-1)out<<-1<<'\n'; else out<<imax+1<<'\n';}
if(q==1){imax=-1;binarysearch1(v,x,0,n-1);out<<imax+1<<'\n';}
if(q==2){imin=100001;binarysearch2(v,x,0,n-1);out<<imin+1<<'\n';}
}
}