#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
const int nmax=2e5+5;
int n, v[nmax];
int cb0 (int n, int x)
{
int origin=0;
for (int p=12; p>=0; p--)
{
if (v[origin+(1<<p)]<=x && v[origin+(1<<p)]!=0)
origin+=(1<<p);
}
if (v[origin]==x)
return origin;
return -1;
}
int cb1 (int n, int x)
{
int origin=0;
for (int p=12; p>=0; p--)
{
if (v[origin+(1<<p)]<=x && v[origin+(1<<p)]!=0)
origin+=(1<<p);
}
if (v[origin]==x)
return origin;
return origin+1;
}
int cb2 (int n, int x)
{
int origin=0;
for (int p=12; p>=0; p--)
{
if (v[origin+(1<<p)]<x && v[origin+(1<<p)]!=0)
origin+=(1<<p);
}
return origin+1;
}
int main()
{
fin >> n;
for (int i=1; i<=n; i++)
fin >> v[i];
int q;
fin >> q;
for (int i=1; i<=q; i++)
{
int cer, x;
fin >> cer >> x;
if (cer==0)
fout << cb0(n,x) << '\n';
if (cer==1)
fout << cb1(n,x) << '\n';
if (cer==2)
fout << cb2(n,x) << '\n';
}
return 0;
}