#include<cstdio>
using namespace std;
FILE *f,*g;
int cautare(int ls, int ld, int x, int v[100010])
{ int m;
m=ls+(ld-ls)/2;
if(v[m]==x) return m;
else while(ls<ld)
{ if(x<v[m]) ld=m-1;
else ls=m+1;
m=ls+(ld-ls)/2;
if(v[m]==x) return m;
}
return -1;
}
int cautare_1(int ls, int ld, int x, int v[100010])
{ int m;
m=ls+(ld-ls)/2;
if(v[m]<=x&&v[m+1]>=x) return m;
else while(ls<ld)
{ if(x>v[m]) ls=m+1;
else if(x<v[m]) ld=m-1;
m=ls+(ld-ls)/2;
if(v[m]<=x&&v[m+1]>=x) return m;
}
return -1;
}
int main()
{ int v[100010],n,m,i,x,p,fl;
f=fopen("cautbin.in","r");
g=fopen("cautbin.out","w");
fscanf(f,"%d\n",&n);
for(i=0;i<n;i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&m);
for(i=0;i<m;i++)
{ fscanf(f,"%d",&fl);
switch(fl) {
case 0: fscanf(f,"%d",&x);
p=cautare(0,n-1,x,v);
if(p==-1) fprintf(g,"-1\n");
else { while(v[p]==v[p+1])
p++;
fprintf(g,"%d\n",++p);
}
break;
case 1: fscanf(f,"%u",&x);
p=cautare_1(0,n-1,x,v);
while(v[p]==v[p+1])
p++;
fprintf(g,"%u\n",++p);
break;
case 2: fscanf(f,"%u",&x);
p=cautare_1(0,n-1,x,v)+1;
while(v[p]==v[p-1])
p--;
fprintf(g,"%d\n",++p);
break;
}
}
fclose(f); fclose(g);
return 0;
}