#include <iostream>
#include <bitset>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int a[100003], n, Q;
int CB0(int val)
{
int st, dr, mij, poz = -1;
st = 1; dr = n;
while (st <= dr)
{
mij = (st + dr) / 2;
if (a[mij] == val)
{
poz = mij;
st = mij + 1;
}
else if (a[mij] < val)st = mij + 1;
else dr = mij - 1;
}
return poz;
}
int CB1(int val)
{
int st, dr, mij, poz = -1;
st = 1; dr = n;
while (st <= dr)
{
mij = (st + dr) / 2;
if (a[mij] <= val)
{
poz = mij;
st = mij + 1;
}
else dr = mij - 1;
}
return poz;
}
int CB2(int val)
{
int st, dr, mij, poz = -1;
st = 1; dr = n;
while (st <= dr)
{
mij = (st + dr) / 2;
if (a[mij] >= val)
{
poz = mij;
dr = mij - 1;
}
else st = mij + 1;
}
return poz;
}
int main()
{
int i, task, val;
fin >> n;
for (i = 1; i <= n; i++)
fin >> a[i];
fin >> Q;
for (i = 1; i <= Q; i++)
{
fin >> task >> val;
if (task == 0)fout << CB0(val) << "\n";
else if(task == 1)fout << CB1(val) << "\n";
else fout << CB2(val) << "\n";
}
return 0;
}