#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5 + 1e2;
int n, m;
int BIT[MAX];
int s, e;
void update(int u, int v) {
  for (; u <= n; u += ((u) & (-(u)))) BIT[u] += v;
}
int get(int u) {
  int ret = 0;
  for (; u; u ^= ((u) & (-(u)))) ret += BIT[u];
  return ret;
}
void normal(int p) {
  for (int i = 1; i <= p; i++) {
    int v = get(s + i - 1) - get(s + i - 2);
    update(s + 2 * p - i, v);
    update(s + i - 1, -v);
  }
  s += p;
}
void rev_normal(int p) {
  for (int i = 1; i <= p; i++) {
    int v = get(e - i + 1) - get(e - i);
    update(e - 2 * p + i, v);
    update(e - i + 1, -v);
  }
  e -= p;
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = (1); i <= (n); i++) update(i, 1);
  int dir = 1;
  s = 1, e = n;
  while (m--) {
    int type;
    scanf("%d", &type);
    if (type == 1) {
      int p;
      scanf("%d", &p);
      if (2 * p <= e - s + 1) {
        if (dir)
          normal(p);
        else
          rev_normal(p);
      } else {
        p = e - s + 1 - p;
        if (dir)
          rev_normal(p);
        else
          normal(p);
        dir ^= 1;
      }
    } else {
      int l, r;
      scanf("%d %d", &l, &r);
      int ans = 0;
      if (dir)
        ans = get(s + r - 1) - get(s + l - 1);
      else
        ans = get(e - l) - get(e - r);
      printf("%d\n", ans);
    }
  }
  return 0;
}
