#include<fstream.h>
#include<iostream.h>
long v[100001],n;
void caut_1(long ls,long ld,long x,long &poz)
{
long m;
if(ls>ld){
if(!poz)poz=-1;
return;
}
m=(ls+ld)/2;
if(x==v[m]){
poz=m;
caut_1(m+1,ld,x,poz);
}
else if(x>v[m])caut_1(m+1,ld,x,poz);
else caut_1(ls,m-1,x,poz);
}
void caut_2(long ls,long ld,long x,long &poz)
{
long m;
if(ls>ld)return;
m=(ls+ld)/2;
if(x>=v[m]){
poz=m;
caut_2(m+1,ld,x,poz);
}
else caut_2(ls,m-1,x,poz);
}
void caut_3(long ls,long ld,long x,long &poz)
{
long m;
if(ls>ld)return;
m=(ls+ld)/2;
if(x<=v[m]){
poz=m;
caut_3(ls,m-1,x,poz);
}
else caut_3(m+1,ld,x,poz);
}
int main()
{
long m,i,act,x,poz;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;i++)fin>>v[i];
fin>>m;
for(i=1;i<=m;i++){
poz=0;
fin>>act>>x;
if(act==0)caut_1(1,n,x,poz);
if(act==1)caut_2(1,n,x,poz);
if(act==2)caut_3(1,n,x,poz);
fout<<poz<<'\n';
}
return 0;
}