#include <bits/stdc++.h>
using namespace std;
struct w {
  int i;
  long long v;
} wt;
bool operator<(const w& a, const w& b) {
  if (a.v != b.v) return a.v < b.v;
  return a.i < b.i;
}
int n, q;
int per;
vector<vector<w> > ww;
vector<w>::iterator it;
vector<long long> dx;
int ta, tb, tc, td, te;
int main() {
  scanf("%d", &n);
  scanf("%d", &q);
  per = (int)sqrt(n);
  for (int a = 0; a < n; a++) {
    scanf("%d", &ta);
    if (a % per == 0) {
      ww.push_back(vector<w>());
      dx.push_back(0);
    }
    ww.back().push_back((w){a, ta});
  }
  for (int a = 0; a < ww.size(); a++) sort(ww[a].begin(), ww[a].end());
  while (q-- > 0) {
    scanf("%d", &ta);
    if (ta == 1) {
      scanf("%d", &ta);
      scanf("%d", &tb);
      scanf("%d", &tc);
      ta--;
      tb--;
      td = ta / per;
      te = tb / per;
      if (td == te) {
        for (int a = 0; a < ww[td].size(); a++)
          if (ww[td][a].i >= ta && ww[td][a].i <= tb) ww[td][a].v += tc;
        sort(ww[td].begin(), ww[td].end());
      } else {
        for (int a = 0; a < ww[td].size(); a++)
          if (ww[td][a].i >= ta) ww[td][a].v += tc;
        sort(ww[td].begin(), ww[td].end());
        for (int a = td + 1; a < te; a++) dx[a] += tc;
        for (int a = 0; a < ww[te].size(); a++)
          if (ww[te][a].i <= tb) ww[te][a].v += tc;
        sort(ww[te].begin(), ww[te].end());
      }
    } else {
      scanf("%d", &ta);
      tb = tc = -1;
      for (int a = 0; a < ww.size(); a++) {
        wt = (w){-1, ta - dx[a]};
        it = lower_bound(ww[a].begin(), ww[a].end(), wt);
        if (it != ww[a].end() && (*it).v == wt.v) {
          tb = (*it).i;
          break;
        }
      }
      if (tb == -1) {
        printf("-1\n");
        continue;
      }
      for (int a = ww.size() - 1; a >= 0; a--) {
        wt = (w){INT_MAX, ta - dx[a]};
        it = upper_bound(ww[a].begin(), ww[a].end(), wt);
        if (it != ww[a].begin()) {
          it--;
          if ((*it).v == wt.v) {
            tc = (*it).i;
            break;
          }
        }
      }
      printf("%d\n", tc - tb);
    }
  }
  return 0;
}
