func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 500100;   const int root = 800;   long long lazy[root];   unordered_set<long long> s[root];   long long v[MAXN];   signed main() {     memset(lazy, 0, sizeof lazy);     long long n, m;     scanf( %lld %lld , &n, &m);     for (long long i = 0; i < n; i++)       scanf( %lld , &v[i]), s[i / root].insert(v[i]);     for (long long i = 1; i <= m; i++) {       long long t;       scanf( %lld , &t);       if (t == 1) {         long long l, r, x;         scanf( %lld %lld %lld , &l, &r, &x);         l -= 1, r -= 1;         s[l / root].clear();         for (long long j = (l / root) * root; j < min((l / root + 1) * root, n);              j++) {           if (j >= l && j <= r) v[j] += x;           s[l / root].insert(v[j]);         }         if (l / root == r / root) continue;         for (long long j = l / root + 1; j < r / root; j++) {           lazy[j] += x;         }         s[r / root].clear();         for (long long j = (r / root) * root; j < min((r / root + 1) * root, n);              j++) {           if (j <= r && j >= l) v[j] += x;           s[r / root].insert(v[j]);         }       }       if (t == 2) {         long long y, ini, fim;         scanf( %lld , &y);         bool flag = false;         for (long long j = 0; j < root; j++) {           if (s[j].find(y - lazy[j]) != s[j].end()) {             flag = true;             for (long long k = j * root; k < (j + 1) * root; k++)               if (v[k] == y - lazy[j]) {                 ini = k;                 break;               }             break;           }         }         if (flag == false) {           printf( -1 n );           continue;         }         for (long long j = root - 1; j >= 0; j--) {           if (s[j].find(y - lazy[j]) != s[j].end()) {             flag = true;             for (long long k = min((j + 1) * root - 1, n - 1); k >= j * root;                  k--) {               if (v[k] == y - lazy[j]) {                 fim = k;                 break;               }             }             break;           }         }         printf( %lld n , fim - ini);       }     }   }   