#include<cstdio>
using namespace std;
int a[10000];
int caut0(int st,int dr, int y)
{
int mid;
mid=(st+dr)/2;
if (mid==st)
return st;
else
if (a[mid]<=y)
return caut0(mid,dr,y);
else
return caut0(st,mid,y);
}
int caut1(int st,int dr, int y)
{
int mid;
mid=(st+dr)/2;
if (mid==st)
return st;
else
if (a[mid]<=y)
return caut0(mid,dr,y);
else
return caut0(st,mid,y);
}
int caut2(int st,int dr, int y)
{
int mid;
mid=(st+dr)/2;
if (mid==st)
return st;
else
if (a[mid]<y)
return caut0(mid,dr,y);
else
return caut0(st,mid,y);
}
int main()
{
int n,m,st,dr,x,y,i,rez;
FILE *f=fopen("cautbin.in","r");
FILE *g=fopen("cautbin.out","w");
fscanf(f,"%d ",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d ",&a[i]);
fscanf(f,"%d ",&m);
for (i=1;i<=m;i++)
{
fscanf(f,"%d %d",&x,&y);
st=1;
dr=n;
if (x==0)
{
rez=caut0(st,dr,y);
if (a[rez]==y)
{fprintf(g,"%d ",rez);
fprintf(g,"\n");}
else
{ fprintf(g,"%d ",-1);
fprintf(g,"\n");}
}
if (x==1)
{
rez=caut1(st,dr,y);
fprintf(g,"%d ",rez);
fprintf(g,"\n");
}
if (x==2)
{
rez=caut2(st,dr,y);
fprintf(g,"%d ",rez);
fprintf(g,"\n");
}
}
fclose(f);
fclose(g);
return 0;
}