#include <iostream>
#include <fstream>
#define MAX 100000
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[MAX];
int Caut1(int st, int dr,int v[MAX], int n)
{
if(st==dr)
if(v[st]==n)
return st;
else
return --st;
else
{
int m=(st+dr)/2;
if(v[m]<=n)
return Caut1(m+1,dr,v,n);
else
return Caut1(st,m-1,v,n);
}
}
int Caut0 (int st,int dr, int v[MAX],int n)
{
if(st==dr)
if(v[--st]==n)
return st;
else
return -1;
else
{
int m=(st+dr)/2;
if(v[m]<=n)
return Caut0(m+1,dr,v,n);
else
return Caut0(st,m-1,v,n);
}
}
int Caut2 (int st, int dr,int v[MAX], int n)
{
if(st==dr)
return st;
else
{
int m=(st+dr)/2;
if(v[m]<n)
return Caut2(m+1,dr,v,n);
else
return Caut2(st,m,v,n);
}
}
int main()
{int N,M,i,y,x;
f>>N;
for(i=1;i<=N;i++)
f>>v[i];
f>>M;
while(M!=0)
{M--;
f>>y>>x;
if(y==0)
g<<Caut0(1,N,v,x)<<endl;
if(y==1)
g<<Caut1(1,N,v,x)<<endl;
if(y==2)
g<<Caut2(1,N,v,x)<<endl;
}
return 0;
}