#include <iostream>
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int pozitie;
int cautbin( int inc, int sf, int v[], int b)
{
int mij=(inc+sf)/2;
if(b==v[mij])
return mij;
else
if(b>v[mij])
return cautbin(mij+1,sf,v,b);
return cautbin(inc,mij,v,b);
}
int cautbin1( int inc, int sf, int v[], int b)
{
int mij=(inc+sf)/2;
if(b==v[mij+1])
return cautbin1(mij+1,sf,v,b);
if(b==v[mij])
return mij;
else
if(b>v[mij])
return cautbin1(mij+1,sf,v,b);
return cautbin1(inc,mij,v,b);
}
int cautbin2( int inc, int sf, int v[], int b)
{
int mij=(inc+sf)/2;
if(b==v[mij-1])
return cautbin1(inc,mij-1,v,b);
if(b==v[mij])
return mij;
else
if(b>v[mij])
return cautbin1(mij+1,sf,v,b);
return cautbin1(inc,mij,v,b);
}
int main()
{
int v[100000],i,j,n,mij,m;
f>>n;
for(int i=0;i<n;i++)
f>>v[i];
f>>m;
for(int i=0;i<m;i++)
{
int a,b;
f>>a>>b;
if(a==0)
{
pozitie=cautbin(0,n-1,v,b);
while(v[pozitie]==b&&pozitie<n)
pozitie++;
g<<pozitie-1<<'\n';
}
else if (a==1)
{
pozitie=cautbin1(0,n-1,v,b);
while(v[pozitie]<=b&&pozitie<n)
pozitie++;
pozitie--;
g<<pozitie<<'\n';
}
else
{
pozitie=cautbin2(0,n-1,v,b);
while(v[pozitie]>=b&&pozitie>=0)
pozitie--;
pozitie++;
g<<pozitie<<'\n';
}
}
return 0;
}