func_code_string: #include <bits/stdc++.h>   using namespace std;   struct fenwick {     int N;     vector<int> sum;     void init(int n) {       N = n + 1;       sum.assign(N, 0);     }     void add(int i, int x) {       for (i++; i < N; i += i & -i) {         sum[i] += x;       }     }     int get(int i) {       int tot = 0;       for (i++; i > 0; i -= i & -i) {         tot += sum[i];       }       return tot;     }     int get(int i, int j) { return get(j) - (i > 0 ? get(i - 1) : 0); }   };   fenwick xs;   int lo, hi;   bool flip;   void init(int n, int x) {     xs.init(n);     for (int i = 0; i < n; i++) {       xs.add(i, x);     }     lo = 0;     hi = n - 1;   }   int len() { return hi - lo + 1; }   int get(int i) {     i = !flip ? lo + i : hi - i;     return xs.get(i, i);   }   int get(int i, int j) {     if (!flip) {       i += lo;       j += lo;     } else {       i = hi - i;       j = hi - j;       swap(i, j);     }     return xs.get(i, j);   }   void add(int i, int x) {     i = !flip ? lo + i : hi - i;     xs.add(i, x);   }   void drop(int k) {     if (!flip) {       lo += k;     } else {       hi -= k;     }   }   void dump() {     int n = len();     for (int i = 0; i < n; i++) {       cerr << get(i) <<    ;     }     cerr << endl;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     int n, q;     cin >> n >> q;     init(n, 1);     while (q--) {       int t, i, j;       cin >> t >> i;       if (t == 1) {         if (i > len() / 2) {           i = len() - i;           flip = !flip;         }         for (int k = 0; i - 1 - k >= 0; k++) {           add(i + k, get(i - 1 - k));         }         drop(i);       } else {         cin >> j;         cout << get(i, j - 1) <<   n ;       }     }     return 0;   }   