func_code_string: #include <bits/stdc++.h>   using namespace std;   struct vect {     int h, p1, p2;   };   struct point {     int p1, p2;   };   int n, mod, nr, t;   long long solf;   int viz[200005];   point poz[200005];   map<int, vect> h;   vector<int> aib[200005];   void precalc() {     int i, j, x;     for (i = 0; i < n; i++)       if (!viz[i]) {         x = 1;         j = i;         nr++;         do {           viz[j] = nr;           poz[j].p1 = x;           x++;           j = (j + mod) % n;         } while (!viz[j]);         j = i;         do {           poz[j].p2 = poz[j].p1 + x - 1;           j = (j + mod) % n;         } while (!poz[j].p2);         for (j = 0; j <= 2 * x; j++) aib[nr].push_back(0);       }   }   void update(int ind, int poz, int val) {     while (poz < aib[ind].size()) {       aib[ind][poz] += val;       poz += poz & -poz;     }   }   int query(int ind, int poz) {     int sol = 0;     while (poz > 0) {       sol += aib[ind][poz];       poz -= poz & -poz;     }     return sol;   }   int find(int x) {     int st = poz[x].p1, dr = poz[x].p2, m, sol = dr - 1;     int nr = st - query(viz[x], st);     while (st <= dr) {       m = (st + dr) >> 1;       if (m - query(viz[x], m) > nr) {         sol = m;         dr = m - 1;       } else         st = m + 1;     }     solf += sol - poz[x].p1;     sol = ((1LL * (sol - poz[x].p1) * mod) % n + x) % n;     return sol;   }   int main() {     scanf( %d %d %d n , &n, &mod, &t);     precalc();     vect x;     char ch;     int id, hash, y, z;     while (t--) {       scanf( %c , &ch);       if (ch ==  - ) {         scanf( %d n , &id);         x = h[id];         update(x.h, x.p1, -1);         update(x.h, x.p2, -1);         h[id] = (vect){0, 0, 0};       } else {         scanf( %d %d n , &id, &hash);         x.h = viz[hash];         x.p1 = poz[hash].p1;         x.p2 = poz[hash].p2;         y = query(x.h, x.p1);         z = query(x.h, x.p1 - 1);         if (y != z) hash = find(hash);         x.h = viz[hash];         x.p1 = poz[hash].p1;         x.p2 = poz[hash].p2;         h[id] = x;         update(x.h, x.p1, 1);         update(x.h, x.p2, 1);       }     }     printf( %I64d n , solf);     return 0;   }   