#include<stdio.h>
#define X 100001
void bns1(int v[], int st, int dr, int x, int &val)
{
if(st>dr) return;
int mij=st+(dr-st)/2;
if(v[mij]==x)
{
val=mij;
if(mij+1<=dr) bns1(v,mij+1,dr,x,val);
}
else if(v[mij]<x) bns1(v,mij+1,dr,x,val);
else bns1(v,st,mij-1,x,val);
}
void bns2(int v[], int st, int dr, int x, int &val)
{
if(st>dr) return;
int mij=st+(dr-st)/2;
if(v[mij]<=x)
{
val=mij;
if(mij+1<=dr) bns2(v,mij+1,dr,x,val);
}
else if(v[mij]<x) bns2(v,mij+1,dr,x,val);
else bns2(v,st,mij-1,x,val);
}
void bns3(int v[], int st, int dr, int x, int &val)
{
if(st>dr) return;
int mij=st+(dr-st)/2;
if(v[mij]>=x)
{
val=mij;
if(st<=mij-1) bns3(v,st,mij-1,x,val);
}
else if(v[mij]<x) bns3(v,mij+1,dr,x,val);
else bns3(v,st,mij-1,x,val);
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int v[X],n,m,i,x,y,val;
scanf("%d",&n);
for(i=1; i<=n; ++i) scanf("%d",&v[i]);
scanf("%d",&m);
for(; m; --m)
{
scanf("%d %d",&x, &y);
switch(x)
{
case 0:
val=0;
bns1(v,1,n,y,val);
if(v[val]==y) printf("%d\n",val);
else printf("-1\n");
break;
case 1:
val=0;
bns2(v,1,n,y,val);
printf("%d\n",val);
break;
case 2:
val=0;
bns3(v,1,n,y,val);
printf("%d\n",val);
break;
}
}
return 0;
}