#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NMAX = 100005;
int N, M, V[NMAX];
int binSrc1(int st, int dr, int x)
{
int sol = -1;
while(st <= dr) {
int mid = st + (dr - st) / 2;
if(V[mid] == x) {
sol = mid;
st = mid + 1;
}
else if(V[mid] > x)
dr = mid - 1;
else
st = mid + 1;
}
return sol;
}
int binSrc2(int st, int dr, int x)
{
int sol = -1;
while(st <= dr) {
int mid = st + (dr - st) / 2;
if(V[mid] == x) {
sol = mid;
st = mid + 1;
}
else if(V[mid] > x)
dr = mid - 1;
else {
sol = mid;
st = mid + 1;
}
}
return sol;
}
int binSrc3(int st, int dr, int x)
{
int sol = -1;
while(st <= dr) {
int mid = st + (dr - st) / 2;
if(V[mid] == x) {
sol = mid;
dr = mid - 1;
}
else if(V[mid] > x) {
sol = mid;
dr = mid - 1;
}
else
st = mid + 1;
}
return sol;
}
int main()
{
fin >> N;
for(int i = 1; i <= N; i++)
fin >> V[i];
fin >> M;
for(int i = 0; i < M; i++) {
int nrCrt, x;
fin >> nrCrt >> x;
if(nrCrt == 0)
fout << binSrc1(1, N, x) << "\n";
if(nrCrt == 1)
fout << binSrc2(1, N, x) << "\n";
if(nrCrt == 2)
fout << binSrc3(1, N, x) << "\n";
}
}