#include <cstdio>
#include <iostream>
#define NMAX 100005
#define LMAX (1 << 16)
using namespace std;
int n, m, A[NMAX], pos;
int cb1(int *, int, int);
int cb2(int *, int, int);
int cb3(int *, int, int);
typedef int (*func) (int *, int, int);
func funcs[] = {cb1, cb2, cb3};
char line[LMAX];
int cb1(int *A, int n, int val)
{
int left = -1, right = n, mid;
while (right - left > 1)
{
mid = (left + right) / 2;
if (A[mid] <= val)
left = mid;
else
right = mid;
}
if (left == -1 || A[left] != val)
return -1;
return left + 1;
}
int cb2(int *A, int n, int val)
{
int left = -1, right = n, mid;
while (right - left > 1)
{
mid = (left + right) / 2;
if (A[mid] <= val)
left = mid;
else
right = mid;
}
return left + 1;
}
int cb3(int *A, int n, int val)
{
int left = -1, right = n, mid;
while (right - left > 1)
{
mid = (left + right) / 2;
if (A[mid] < val)
left = mid;
else
right = mid;
}
return right + 1;
}
void read_int(int &x)
{
x = 0;
while (pos < LMAX && !isdigit(line[pos]))
if (++pos == LMAX)
fread(line, 1, LMAX, stdin), pos = 0;
while (pos < LMAX && isdigit(line[pos]))
{
x = x * 10 + line[pos] - '0';
if (++pos == LMAX)
fread(line, 1, LMAX, stdin), pos = 0;
}
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
read_int(n);
int i, type, x;
for (i = 0; i < n; i++)
read_int(A[i]);
read_int(m);
for (i = 0; i < m; i++)
{
read_int(type); read_int(x);
cout << funcs[type](A, n, x) << "\n";
}
return 0;
}