#include <fstream>
#define NMAX 100002
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int n, v[NMAX], m;
void citire()
{fin>>n;
int i;
for(i = 1; i <= n; i++)
fin>>v[i];
fin>>m;
}
void rezolva_0(int x)
{ int st, dr, mijl,p;
st = 1;
dr = n;
while(st <= dr)
{
mijl = (st+dr)/2;
if (v[mijl] <= x)
{p = mijl;
st = mijl+1;
}
else
dr = mijl-1;
}
if(v[p] != x)
fout<<"-1";
else
fout<<p;
fout<<'\n';
}
void rezolva_1(int x)
{int st, dr, mijl,p;
st = 1;
dr = n;
while(st <= dr)
{
mijl = (st+dr)/2;
if(v[mijl] <= x)
{p = mijl;
st = mijl+1;
}
else
dr = mijl-1;
}
fout<<p<<'\n';
}
void rezolva_2(int x)
{
int st, dr, mijl,p;
st = 1;
dr = n;
while(st <= dr)
{
mijl = (st+dr)/2;
if(v[mijl] >= x)
{p = mijl;
dr = mijl-1;
}
else
st = mijl+1;
}
fout<<p<<'\n';
}
int main()
{ citire();
int i, x, y;
for(i = 1; i <= m; i++)
{fin>>y>>x;
if(y == 0)
rezolva_0(x);
else
if(y == 1)
rezolva_1(x);
else
rezolva_2(x);
}
fin.close();
fout.close();
return 0;
}