#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
const int mod = (int)1e+9 + 7;
const double pi = acos(-1.);
const int maxn = 100100;
vector<pair<long long, int> > st[maxn];
long long add[maxn];
int main() {
  srand(time(0));
  const string file = "";
  if (!file.empty()) {
    freopen((file + ".in").c_str(), "r", stdin);
    freopen((file + ".out").c_str(), "w", stdout);
  }
  int n, q;
  scanf("%d%d", &n, &q);
  int sz = 1500, cnt = 0;
  for (int i = 0; i < n; i++) {
    if ((int)st[cnt].size() == sz) {
      cnt++;
    }
    st[cnt].push_back(make_pair(0, i));
    scanf("%I64d", &st[cnt].back().first);
  }
  if (!st[cnt].empty()) {
    cnt++;
  }
  for (int i = 0; i < cnt; i++) {
    sort(st[i].begin(), st[i].end());
  }
  for (; q > 0; q--) {
    int tp;
    scanf("%d", &tp);
    if (tp == 1) {
      int l, r;
      long long x;
      scanf("%d%d%I64d", &l, &r, &x);
      l--, r--;
      int sl = 0, sr = -1;
      for (int i = 0; i < cnt; i++) {
        sl = sr + 1;
        sr += st[i].size();
        if (sr < l || sl > r) {
          continue;
        }
        if (l <= sl && sr <= r) {
          add[i] += x;
          continue;
        }
        for (int f = 0; f < (int)st[i].size(); f++) {
          if (st[i][f].second >= l && st[i][f].second <= r) {
            st[i][f].first += x;
          }
        }
        sort(st[i].begin(), st[i].end());
      }
    } else {
      long long y;
      scanf("%I64d", &y);
      int l = mod, r = -mod;
      bool ok = 0;
      for (int i = 0; i < cnt; i++) {
        int pos =
            lower_bound(st[i].begin(), st[i].end(), make_pair(y - add[i], 0)) -
            st[i].begin();
        if (pos < (int)st[i].size() && st[i][pos].first == y - add[i]) {
          l = st[i][pos].second;
          ok = 1;
          break;
        }
      }
      for (int i = cnt - 1; i >= 0; i--) {
        int pos = lower_bound(st[i].begin(), st[i].end(),
                              make_pair(y - add[i], mod)) -
                  st[i].begin();
        pos--;
        if (pos >= 0 && st[i][pos].first == y - add[i]) {
          r = st[i][pos].second;
          ok = 1;
          break;
        }
      }
      if (ok) {
        printf("%d\n", r - l);
      } else {
        printf("-1\n");
      }
    }
  }
  return (0);
}
