import java.util.Scanner;
public class Main {
static int[] arr;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int q = scan.nextInt();
arr = new int[n + 1];
for (int i = 1; i <= n; i++) {
arr[i] = scan.nextInt();
}
while (q-- > 0) {
int id = scan.nextInt();
int l = scan.nextInt();
int r = scan.nextInt();
int x = scan.nextInt();
if (id == 1) {
System.out.println(index1(l, r, x));
}
if (id == 2) {
System.out.println(index2(l, r, x));
}
if (id == 3) {
System.out.println(index3(l, r, x));
}
if (id == 4) {
System.out.println(index4(l, r, x));
}
}
}
public static int index1(int l, int r, int x) {
int left = l;
int right = r;
int index = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
index = mid;
right = mid - 1;
} else if (arr[mid] > x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return index;
}
public static int index2(int l, int r, int x) {
int left = l;
int right = r;
int index = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
index = mid;
left = mid + 1;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return index;
}
public static int index3(int l, int r, int x) {
int left = l;
int right = r;
int index = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] >= x) {
index = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return index;
}
public static int index4(int l, int r, int x) {
int left = l;
int right = r;
int index = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] > x) {
index = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return index;
}
}