#include <fstream>
#include <vector>
#include <string>
#include <map>
#include <unordered_map>
#include <queue>
#include <deque>
#include <cmath>
#include <algorithm>
#define MAX_N 100000
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int N, M, qType, num;
vector<int> v(MAX_N);
void solve0() {
auto it = upper_bound(v.begin(), v.begin() + N, num);
if (it != v.begin() && *(prev(it)) == num) {
cout << distance(v.begin(), it) << '\n';
}
else {
cout << -1 << '\n';
}
}
void solve1() {
auto it = upper_bound(v.begin(), v.begin() + N, num);
cout << distance(v.begin(), it) << '\n';
}
void solve2() {
auto it = lower_bound(v.begin(), v.begin() + N, num);
cout << distance(v.begin(), it) + 1 << '\n';
}
int main() {
cin.sync_with_stdio(false);
cout.sync_with_stdio(false);
cin >> N;
for (int i = 0; i < N; ++i) {
cin >> v[i];
}
cin >> M;
for (int i = 0; i < M; ++i) {
cin >> qType >> num;
switch (qType) {
case 0:
solve0();
break;
case 1:
solve1();
break;
case 2:
solve2();
break;
}
}
return 0;
}