#include<cstdio>
const int nmax=1e5+5;
int v[nmax],n;
inline void cautbin1(int nr)
{
int st,dr,med;
st=1;
dr=n;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]>nr)
dr=med-1;
else
st=med+1;
}
med=(st+dr)/2;
if(v[med]==nr)
printf("%d\n",med);
else if(v[med-1]==nr)
printf("%d\n",med-1);
else
printf("-1\n");
return;
}
inline void cautbin2(int nr)
{
int st,dr,med;
st=1;
dr=n;
while(st<dr)
{
med=(st+dr)/2;
if(v[med]>nr)
dr=med;
else
st=med+1;
}
med=(st+dr)/2;
if(v[med]>nr)
med--;
printf("%d\n",med);
return;
}
inline void cautbin3(int nr)
{
int st,dr,med;
st=1;
dr=n;
while(st<dr)
{
med=(st+dr)/2;
if(v[med]<nr)
st=med+1;
else
dr=med;
}
med=(st+dr)/2;
if(v[med]<nr)
med++;
printf("%d\n",med);
return;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int i,j,a,b,m,nr;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&nr);
if(a==0)
cautbin1(nr);
else if(a==1)
cautbin2(nr);
else if(a==2)
cautbin3(nr);
}
}