#include <bits/stdc++.h>
using namespace std;
int dX[] = {-1, 0, 1, 0, -1, 1, 1, -1};
int dY[] = {0, 1, 0, -1, 1, 1, -1, -1};
inline void Refresh() {}
int n, m;
int a[2 * 100007];
int lft[2 * 100007];
void preprocess() {
  memset(lft, -1, sizeof lft);
  for (int i = 2; i <= n; ++i) {
    lft[i] = ((a[i] != a[i - 1]) ? (i - 1) : lft[i - 1]);
  }
  return;
}
int main() {
  int l, r, x;
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
  }
  preprocess();
  for (int i = 0; i < m; ++i) {
    scanf("%d %d %d", &l, &r, &x);
    if (a[r] != x)
      printf("%d\n", r);
    else {
      if (lft[r] >= l)
        printf("%d\n", lft[r]);
      else
        printf("-1\n");
    }
  }
  return 0;
}
