#include <fstream>
void binKer(int k, int szam, int * tomb, int bal, int jobb, int &megtalalt){
if(bal > jobb)
return;
int kozep = (bal + jobb) / 2;
// tomb[kozep] = szam
// tomb[kozep - 1] <= tomb[kozep] < tomb[kozep + 1]
if(k == 0){
if(tomb[kozep] == szam){
megtalalt = kozep;
return binKer(k, szam, tomb, kozep + 1, jobb, megtalalt);
}
if(tomb[kozep] > szam)
return binKer(k, szam, tomb, bal, kozep - 1, megtalalt);
if(tomb[kozep] < szam)
return binKer(k, szam, tomb, kozep + 1, jobb, megtalalt);
}
// tomb[kozep] <= szam < tomb[kozep + 1]
if(k == 1){
if(tomb[kozep] > szam)
return binKer(k, szam, tomb, bal, kozep - 1, megtalalt);
if(tomb[kozep] <= szam){
megtalalt = kozep;
return binKer(k, szam, tomb, kozep + 1, jobb, megtalalt);
}
return;
}
// tomb[kozep - 1] < szam <= tomb[kozep]
if(k == 2){
if(tomb[kozep] >= szam){
megtalalt = kozep;
return binKer(k, szam, tomb, bal, kozep - 1, megtalalt);
}
if(tomb[kozep] < szam)
return binKer(k, szam, tomb, kozep + 1, jobb, megtalalt);
return;
}
return;
}
int main(){
std::ifstream bem("cautbin.in");
std::ofstream kim("cautbin.out");
int n, m;
bem >> n;
int * tomb = new int[n];
for(int i = 0; i < n; i++) bem >> tomb[i];
bem >> m;
for(int i = 0; i < m; i++){
int k, szam, megtalalt = -1;
bem >> k >> szam;
binKer(k, szam, tomb, 0, n - 1, megtalalt);
if(megtalalt == -1)
kim << -1 << ' ';
else
kim << megtalalt + 1 << ' ';
}
}