#include<cstdio>
int n,a[101],m;
int cautbin0(int imin,int imax,int k)
{
int imid=(imin+imax)/2;
if(a[imid]>k) return cautbin0(imid,imax,k);
if(a[imid]<k) return cautbin0(imin,imid,k);
if(a[imid]==k) {if(a[imid+1]>k){if(imid>0) return imid; else return -1;}else return cautbin0(imid+1,imax,k);}
}
int cautbin1(int imin,int imax,int k)
{
int imid=(imin+imax)/2;
if(a[imid]>k) return cautbin1(imin,imid-1,k);
if(a[imid]<=k) {if(a[imid+1]>k) return imid; else cautbin1(imid+1,imax,k);}
}
int cautbin2(int imin,int imax,int k)
{
int imid=(imin+imax)/2;
if(a[imid]<k) return cautbin2(imid+1,imax,k);
if(a[imid]>=k
){if(a[imid-1]<k) return imid; else return cautbin2(imin,imid-1,k);}
}
int main()
{
int x,k,i;
freopen("cautbin.in","rt",stdin);
freopen("cautbin.out","wt",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)
{
scanf("%ld",&a[i]);
}
scanf("%ld",&m);
for(i=1;i<=m;i++)
{
scanf("%ld%ld",&x,&k);
switch(x)
{
case 0:printf("%ld ",cautbin0(1,n,k));break;
case 1:printf("%ld ",cautbin1(1,n,k));break;
case 2:printf("%ld ",cautbin2(1,n,k));break;
}
}
return 0;
}