#include <iostream>
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100001];
int cautare0(int st, int dr, int val)
{
int mij;
while(st <= dr)
{
mij = (st + dr) / 2;
if(a[mij] <= val)
st = mij + 1;
else
dr = mij - 1;
}
mij = (st + dr) / 2;
if(a[mij] > val) mij --;
if(a[mij] == val)
return mij;
return -1;
}
int cautare1(int st, int dr, int val)
{
int mij;
while(st < dr)
{
mij = (st + dr) / 2;
if(a[mij] <= val)
st = mij + 1;
else
dr = mij ;
}
mij = (st + dr) / 2;
if(a[mij] > val)
mij--;
return mij;
}
int cautare2(int st, int dr, int val)
{
int mij;
while(st < dr)
{
mij = (st + dr) / 2;
if(a[mij] < val)
st = mij + 1;
else
dr = mij ;
}
mij = (st + dr) / 2;
if(a[mij] < val)
mij++;
return mij;
}
int main()
{
int N, M, X, Y;
f >> N;
for(int i = 1; i <= N; i++)
f >> a[i];
f >> M;
for(int i = 1; i <= M; i++)
{
f >> Y >> X;
if(Y == 0)
g << cautare0(1, N , X)<<'\n' ;
if(Y == 1)
g << cautare1(1, N , X)<<'\n' ;
if(Y == 2)
g << cautare2(1, N , X)<<'\n' ;
}
return 0;
}