const maxn=100001;
type vector=array[0..maxn]of longint;
var n,i,m,x:longint;
v:vector;
tip:byte;
p,q,r,s:longint;
function caut0:longint;
begin
p:=1;
q:=n;
repeat
r:=(p+q)div 2;
s:=v[r];
if(s=x)and(v[r+1]<>x)then begin
caut0:=r;
exit;
end
else if x<s then q:=r-1
else p:=r+1;
until p>q;
caut0:=-1;
end;
function caut1:longint;
begin
p:=1;
q:=n;
repeat
r:=(p+q)div 2;
s:=v[r];
if(s<=x)and(x<v[r+1])then begin
caut1:=r;
exit;
end
else if x<s then q:=r-1
else p:=r+1;
until p>q;
caut1:=-1;
end;
function caut2:longint;
begin
p:=1;
q:=n;
repeat
r:=(p+q)div 2;
s:=v[r];
if(s>=x)and(x>v[r-1])then begin
caut2:=r;
exit;
end
else if x<=s then q:=r-1
else p:=r+1;
until p>q;
caut2:=-1;
end;
begin
assign(input,'cautbin.in');
reset(input);
assign(output,'cautbin.out');
rewrite(output);
read(n);
v[0]:=-1;
x:=n div 100;
for i:=1 to x do
begin
m:=(i-1)*100;
read(
v[m+1],v[m+2],v[m+3],v[m+4],v[m+5],v[m+6],v[m+7],v[m+8],v[m+9],v[m+10],
v[m+11],v[m+12],v[m+13],v[m+14],v[m+15],v[m+16],v[m+17],v[m+18],v[m+19],v[m+20],
v[m+21],v[m+22],v[m+23],v[m+24],v[m+25],v[m+26],v[m+27],v[m+28],v[m+29],v[m+30],
v[m+31],v[m+32],v[m+33],v[m+34],v[m+35],v[m+36],v[m+37],v[m+38],v[m+39],v[m+40],
v[m+41],v[m+42],v[m+43],v[m+44],v[m+45],v[m+46],v[m+47],v[m+48],v[m+49],v[m+50],
v[m+51],v[m+52],v[m+53],v[m+54],v[m+55],v[m+56],v[m+57],v[m+58],v[m+59],v[m+60],
v[m+61],v[m+62],v[m+63],v[m+64],v[m+65],v[m+66],v[m+67],v[m+68],v[m+69],v[m+70],
v[m+71],v[m+72],v[m+73],v[m+74],v[m+75],v[m+76],v[m+77],v[m+78],v[m+79],v[m+80],
v[m+81],v[m+82],v[m+83],v[m+84],v[m+85],v[m+86],v[m+87],v[m+88],v[m+89],v[m+90],
v[m+91],v[m+92],v[m+93],v[m+94],v[m+95],v[m+96],v[m+97],v[m+98],v[m+99],v[m+100]);
end;
x:=x*100;
for i:=1 to n mod 100 do read(v[x+i]);
v[n+1]:=maxlongint;
read(m);
for i:=1 to m do
begin
read(tip,x);
case tip of
0:if x<>maxlongint then writeln(caut0)
else writeln(n);
1:if x<>maxlongint then writeln(caut1)
else writeln(n);
2:writeln(caut2);
end;
end;
close(output);
close(input);
end.