func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, q;   int m;   int lastans;   int a[1000][700];   int b[100100];   int sz[1000];   short int cnt[1000][100100];   void remake() {     int pos = 0;     for (int i = 0; i <= m; i++) {       sz[i] = 0;       for (int j = 0; j < 700; a[i][j] = 0, j++) {         if (a[i][j] == -1 || a[i][j] == 0) continue;         cnt[i][a[i][j]]--;         b[pos] = a[i][j];         pos++;       }     }     for (int i = 0; i < n; i++) {       a[i / 333][i % 333] = b[i];       cnt[i / 333][b[i]]++;       sz[i / 333]++;     }   }   int find(int it, int pos) {     int i = 0;     pos--;     while (pos || a[it][i] == -1) {       if (a[it][i] == -1) pos++;       pos--;       i++;     }     int res = a[it][i];     a[it][i] = -1;     return res;   }   void update(int it, int pos, int k) {     pos--;     int t = sz[it] - pos;     int i = 0;     while (pos || a[it][i] == -1) {       if (a[it][i] == -1) pos++;       pos--;       i++;     }     int buf = a[it][i];     a[it][i] = k;     while (t) {       i++;       if (buf != -1) t--;       swap(a[it][i], buf);     }   }   int solve(int r, int k) {     int res = 0;     int pos = 0;     int it = 0;     while (it <= m && sz[it] <= r) {       r -= sz[it];       res += cnt[it][k];       it++;     }     int i = 0;     while (pos < r) {       if (a[it][i] == -1 || a[it][i] == 0) {         i++;         continue;       }       res += (a[it][i] == k);       i++;       pos++;     }     return res;   }   int main() {     ios_base::sync_with_stdio(0);     cin >> n;     for (int i = 0; i < n; i++) {       cin >> a[i / 333][i % 333];       cnt[i / 333][a[i / 333][i % 333]]++;       sz[i / 333]++;     }     m = (n - 1) / 333 + 1;     cin >> q;     while (q--) {       int type, l, r, k;       cin >> type >> l >> r;       l = (l + lastans - 1) % n + 1;       r = (r + lastans - 1) % n + 1;       if (l > r) swap(l, r);       if (type == 1) {         int it = 0;         int pos = 0;         while (pos < l) {           pos += sz[it];           it++;         }         if (pos >= l) {           it--;           pos -= sz[it];         }         int p1 = pos;         int w = it;         it = 0;         pos = 0;         while (pos < r) {           pos += sz[it];           it++;         }         if (pos >= r) {           it--;           pos -= sz[it];         }         k = find(it, r - pos);         cnt[w][k]++;         cnt[it][k]--;         sz[w]++;         sz[it]--;         update(w, l - p1, k);         if (sz[w] > 2 * 333) remake();       } else {         cin >> k;         k = (k + lastans - 1) % n + 1;         lastans = solve(r, k) - solve(l - 1, k);         printf( %d n , lastans);       }     }   }   