#include <bits/stdc++.h>
const int MAX_N = 200010;
int bit[MAX_N], size;
void init(int s) {
  size = 1;
  while (size < s) size *= 2;
  for (int i = 0; i < size; i++) bit[i] = 0;
}
void add(int k, int x) {
  while (k <= size) {
    bit[k] += x;
    k += k & -k;
  }
}
int sum(int k) {
  int res = 0;
  while (k > 0) {
    res += bit[k];
    k -= k & -k;
  }
  return res;
}
int get(int k) { return sum(k) - sum(k - 1); }
int main() {
  int s, t;
  int n, q;
  int rev = 0;
  scanf("%d %d", &n, &q);
  init(n + 1);
  for (int i = 1; i <= n; i++) {
    add(i, 1);
  }
  s = 0;
  t = n;
  for (int qc = 0; qc < q; qc++) {
    int type;
    scanf("%d", &type);
    if (type == 1) {
      int p;
      scanf("%d", &p);
      if (rev == 0) {
        if (p <= (t - s) / 2) {
          for (int i = 0; s + p - i > s; i++) {
            add(s + p + i + 1, get(s + p - i));
          }
          s += p;
        } else {
          int cnt = 0;
          for (int i = 0; s + p + i + 1 <= t; i++, cnt++) {
            add(s + p - i, get(s + p + i + 1));
          }
          t -= cnt;
          rev = 1;
        }
      } else {
        if (p <= (t - s) / 2) {
          for (int i = 0; t - p + i + 1 <= t; i++) {
            add(t - p - i, get(t - p + i + 1));
          }
          t -= p;
        } else {
          int cnt = 0;
          for (int i = 0; t - p - i > s; i++, cnt++) {
            add(t - p + i + 1, get(t - p - i));
          }
          s += cnt;
          rev = 0;
        }
      }
    } else if (type == 2) {
      int a, b;
      scanf("%d %d", &a, &b);
      if (rev == 0) {
        printf("%d\n", sum(s + b) - sum(s + a));
      } else {
        printf("%d\n", sum(t - a) - sum(t - b));
      }
    }
  }
  return 0;
}
