#include <stdio.h>
#include <stdlib.h>
int biggest_subject(int *list, int list_length, int subject);
int smaller_than_subject(int *list, int list_length, int subject);
int greather_than_subject(int *list, int list_length, int subject);
int main() {
FILE *input, *output;
int list_length, count, result, index, type, subject, position;
int *list;
input = fopen("cautbin.in", "r");
output = fopen("cautbin.out", "w");
fscanf(input, "%d\n", &list_length);
list = (int*) malloc(sizeof(int) * (list_length - 1));
for(index = 0; index < list_length; index += 1) {
fscanf(input, "%d", &list[index]);
}
fscanf(input, "%d\n", &count);
for(index = 0; index < count; index += 1) {
fscanf(input, "%d %d", &type, &subject);
switch (type) {
case 0:
result = biggest_subject(list, list_length, subject);
break;
case 1:
result = smaller_than_subject(list, list_length, subject);
break;
case 2:
result = greather_than_subject(list, list_length, subject);
break;
}
fprintf(output, "%d\n", result);
}
fclose(input);
fclose(output);
return 0;
}
int biggest_subject(int *list, int list_length, int subject){
int min, max, mid, current;
min = 0;
max = list_length - 1;
while (min <= max) {
mid = (min + max) / 2;
// printf("m: %d M: %d /: %d, l: %d, S: %d\n", min, max, mid, list[mid], subject);
if (list[mid] <= subject) {
min = mid + 1;
} else {
max = mid - 1;
}
}
// printf("mid: %d\n", mid);
if (list[mid] > subject) mid -= 1;
if (list[mid] == subject) return mid + 1;
// printf("returning -1\n");
return -1;
}
int smaller_than_subject(int *list, int list_length, int subject){
int min, max, mid, current;
min = 0;
max = list_length - 1;
while (min <= max) {
mid = (min + max) / 2;
if (list[mid] <= subject) {
min = mid + 1;
} else {
max = mid - 1;
}
}
if (list[mid] > subject) return mid;
return mid + 1;
}
int greather_than_subject(int *list, int list_length, int subject){
int min, max, mid, current;
min = 0;
max = list_length - 1;
while (min < max) {
mid = (min + max) / 2;
if (list[mid] < subject) {
min = mid + 1;
} else {
max = mid - 1;
}
}
if (list[mid] >= subject) return mid;
return mid + 1;
}