func_code_string: #include <bits/stdc++.h>   using namespace std;   int N, M;   int _next[10000000];   struct event {     int l, r, x;     event() {}     event(int l, int r, int x) : l(l), r(r), x(x) {}   };   vector<event> e[7005];   inline bool cross(int l1, int r1, int l2, int r2) {     if (l1 > r2) return false;     if (r1 < l2) return false;     return true;   }   int main() {     for (int i = 1; i < (1 << 21) - 1; i++) {       _next[i] = 1;     }     for (int i = 0; i < 21; i++) {       _next[1 << i]++;     }     for (int i = 2; i < (1 << 21) - 1; i++) {       _next[i] += _next[i - 1];     }     cin >> N;     cin >> M;     int t, v;     int n, l, r, x;     for (int i = 0; i < M; i++) {       cin >> t;       if (t == 1) {         cin >> n >> l >> r >> x;         e[n].push_back(event(l, r, x));       } else {         set<int> S;         cin >> n >> v;         l = v - 1, r = v;         for (int i = n; i <= N; i++) {           for (int j = 0; j < e[i].size(); j++) {             if (cross(l + 1, r, e[i][j].l, e[i][j].r)) S.insert(e[i][j].x);           }           l = _next[l], r = _next[r];         }         cout << S.size() << endl;       }     }     return 0;   }   