#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int c1(int a[],int n,int y);
int c2(int a[],int n,int y);
int c3(int a[],int n,int y);
int c1(int a[],int n,int y)
{
int st=1,dr=n,mij,gasit=0,poz,i;
while(st<=dr&&gasit==0)
{
mij=st+(dr-st)/2;
if(a[mij]==y) {gasit=1;poz=mij;}
else if(a[mij]<y)st=mij+1;
else dr=mij-1;
}
if(gasit==0) return -1;
for(i=poz;i<=n;i++)
{
if(a[i]!=y) break;
}
return i-1;
}
int c2(int a[],int n,int y)
{
if(c1(a,n,y)!=-1) return c1(a,n,y);
else
{
int i,st=1,dr=n,mij;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(a[mij]<y)st=mij+1;
else dr=mij-1;
}
if(a[st]<y) return st;
else
{
for(i=st;i>=1;i--)
if(a[i]<y&&a[i+1]>y) break;
}
return i;
}
}
int c3(int a[],int n,int y)
{
int i,k;
if(c1(a,n,y)!=-1)
{
k=c1(a,n,y);
for(i=k;i>=1;i--)
if(a[i]!=y) break;
return i+1;
}
else
{
int st=1,dr=n,mij;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(a[mij]<y)st=mij+1;
else dr=mij-1;
}
if(a[st]>y) return st;
}
}
int main()
{
int n,a[100001],m,i,x,y;
fin>>n;
for(i=1;i<=n;i++) fin>>a[i];
fin>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y;
if(x==0) fout<<c1(a,n,y)<<"\n";
if(x==1) fout<<c2(a,n,y)<<"\n";
if(x==2) fout<<c3(a,n,y)<<"\n";
}
return 0;
}