#include<cstdio>
#include<fstream>
#include<vector>
using namespace std;
vector<int> v;
int n,m,r=-2;
void cb1(int st, int dr, int x)
{
int m=(st+dr)/2;
if(x==v[m])
{
r=m;
if(st<dr)
cb1(m+1,dr,x);
}
else if(st==dr);
else if(x<v[m])
cb1(st,m-1,x);
else if(x>v[m])
cb1(m+1,dr,x);
}
void cb2(int st, int dr, int x)
{
int m=(st+dr)/2;
if(x>=v[m])
{
r=m;
if(st<dr)
cb2(m+1,dr,x);
}
else if(st==dr);
else if(x<v[m])
cb2(st,m-1,x);
else if(x>v[m])
cb2(m+1,dr,x);
}
void cb3(int st, int dr, int x)
{
int m=(st+dr)/2;
if(x<=v[m])
{
r=m;
if(st<dr)
cb3(st,m-1,x);
}
else if(st==dr);
else if(x<v[m])
cb3(st,m-1,x);
else if(x>v[m])
cb3(m+1,dr,x);
}
void citire()
{
int i,x,y;
scanf("%d",&n);
for(i=0;i<n;i++)
{
v.reserve(n+5);
scanf("%d", &x);
v.push_back(x);
}
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d %d/n",&x,&y);
if(x==0)
cb1(0,n-1,y);
else if(x==1)
cb2(0,n-1,y);
else if(x==2)
cb3(0,n-1,y);
printf("%d\n",r+1);
}
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
citire();
//cautareb();
return 0;
}