#include <iostream>
#include <fstream>
using namespace std;
int n,v[100001],x,i,m,cont=0;
int poz_max(int n, int x)
{
int st, dr, mij;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]>x)dr=mij-1;
else st=mij+1;
}
mij=(st+dr)/2;
if(v[mij]>x) mij--;
if(v[mij]==x) return mij;
else return -1;
}
int poz_max2(int n, int x)
{
int st,dr,mij;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]>x)dr=mij-1;
else st=mij+1;
}
mij=(st+dr)/2;
if(v[mij]>x)mij=mij-1;
if(v[mij]<=x) return mij;
else return -1;
}
int poz_min(int n, int x)
{
int st,dr,mij;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]>=x)dr=mij-1;
else st=mij+1;
}
mij=(st+dr)/2;
if(v[mij]<x)mij=mij+1;
if(v[mij]>=x)return mij;
else return -1;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(i=1; i<=n; i++)
{
f>>v[i];
}
f>>m;
while(cont<m)
{ f>>i;
if(i==0)
{
f>>x;
//g<<poz_max(n,x)<<endl;
}
if(i==1)
{
f>>x;
//g<<poz_max2(n,x)<<endl;
}
if(i==2)
{
f>>x;
g<<poz_min(n,x)<<endl;
}
cont++;
}
}