#include <bits/stdc++.h>
using namespace std;
stringstream ss;
long long mod = 1000000007LL;
long long tree[1 << 20];
void add(int idx, int val) {
  idx++;
  while (idx < (1LL << 20)) {
    tree[idx] += val;
    idx += (idx & -idx);
  }
}
long long read(int idx) {
  idx++;
  long long ret = 0;
  while (idx > 0) {
    ret += tree[idx];
    idx -= (idx & -idx);
  }
  return ret;
}
long long query(int l, int r) {
  if (r < l) return 0;
  return read(r) - read(l - 1);
}
int main() {
  int n, q, t, x, y;
  cin >> n >> q;
  int L = 0, R = n, id = 0;
  for (int i = 0; i < n; i++) add(i, 1);
  for (int i = 0; i < q; i++) {
    cin >> t;
    if (t == 1) {
      cin >> x;
      if (L + x + x > R) {
        id ^= 1;
        x = R - L - x;
      }
      if (id) {
        R = R - x;
        for (int j = 0; j < x; j++) {
          long long val = query(R + j, R + j);
          add(R - j - 1, val);
        }
      } else {
        L = L + x;
        for (int j = 0; j < x; j++) {
          long long val = query(L - j - 1, L - j - 1);
          add(L + j, val);
        }
      }
    } else {
      cin >> x >> y;
      if (id)
        cout << query(R - y, R - x - 1) << endl;
      else
        cout << query(L + x, L + y - 1) << endl;
    }
  }
  return 0;
}
