#include <iostream>
#include <fstream>
using namespace std;
int cautbin0(int t[], int a, int b, int k)
{
int c=(a+b)/2;
if (a==b&&t[a]!=k) return -1;
if (k==t[c-1])
{
while (k==t[c-1]) c++;
return c;
}
else
{
if (k>t[c-1]) cautbin0(t, c+1, b, k);
else cautbin0(t, a, c, k);
}
}
int cautbin1(int t[], int a, int b, int k)
{
int c=(a+b)/2;
if (a==b&&t[a]!=k) return -1;
if (k>=t[c-1])
{
while (k>=t[c-1]) c++;
return c;
}
else
{
if (k>t[c-1]) cautbin1(t, c+1, b, k);
else cautbin1(t, a, c, k);
}
}
int cautbin2(int t[], int a, int b, int k)
{
int c=(a+b)/2;
if (a==b&&t[a]!=k) return -1;
if (k>=t[c-1])
{
while (k<=t[c-1]) c--;
return c+2;
}
else
{
if (k>t[c-1]) cautbin2(t, c+1, b, k);
else cautbin2(t, a, c, k);
}
}
int t[100000];
int n, m, k, szam;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int main()
{
f>>n;
for (int i=0; i<n; i++)
{
f >> t[i-1];
}
f>>m;
for (int i=1; i<=m; i++)
{
f>>szam>>k;
if (szam==0) g << cautbin0(t, 1, n, k)<< " ";
if (szam==1) g << cautbin1(t, 1, n, k)<< " ";
if (szam==2) g << cautbin2(t, 1, n, k)<< " ";
}
f.close();
g.close();
return 0;
}