#include <stdio.h>
int caut0(int *v, int n, int x)
{
int stg=0, dpt=n-1, m;
while (dpt >= stg)
{
m = (stg+dpt)/2;
if (x >= v[m])
stg = m+1;
else
dpt = m-1;
}
m = (stg+dpt)/2;
if (v[m] == x) return m+1;
return -1;
}
int caut1(int *v, int n, int x)
{
int stg=0, dpt=n-1, m;
while (dpt >= stg)
{
m = (stg+dpt)/2;
if (x >= v[m])
stg = m+1;
else
dpt = m-1;
}
m = (stg+dpt)/2;
return m+1;
}
int caut2(int *v, int n, int x)
{
int stg=0, dpt=n-1, m;
while (dpt > stg)
{
m = (stg+dpt)/2;
if (x <= v[m])
dpt = m;
else
stg = m+1;
}
m = (stg+dpt)/2;
return m+1;
}
int main()
{
int v[100000], n, m, i, c, x;
FILE *in = fopen("cautbin.in", "r");
FILE *out = fopen("cautbin.out", "w");
fscanf(in, "%d", &n);
for (i=0;i<n;i++) fscanf(in, "%d", &v[i]);
fscanf(in, "%d", &m);
for (i=0;i<m;i++)
{
fscanf(in, "%d%d", &c, &x);
switch (c)
{
case 0: fprintf(out, "%d\n", caut0(v, n, x)); break;
case 1: fprintf(out, "%d\n", caut1(v, n, x)); break;
case 2: fprintf(out, "%d\n", caut2(v, n, x)); break;
}
}
fclose(in); fclose(out);
return 0;
}