#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
int n, q, c[N];
void modify(int x, int v) {
  if (x == 0) return;
  for (int i = x; i <= n; i += i & -i) c[i] += v;
}
int query(int x) {
  int s = 0;
  for (int i = x; i >= 1; i -= i & -i) s += c[i];
  return s;
}
void work(int a, int b, bool le) {
  for (int i = a; i <= b; ++i) {
    int t = query(i) - query(i - 1);
    modify(i, -t);
    if (le) {
      modify(a - (i - a + 1), t);
    } else
      modify(b + (b - i + 1), t);
  }
}
int L, R;
int get(int x) {
  if (L <= R)
    return x + L - 1;
  else
    return L + 1 - x;
}
int len() { return abs(L - R) + 1; }
int main() {
  scanf("%d%d", &n, &q);
  L = 1, R = n;
  for (int i = 1; i <= n; ++i) modify(i, 1);
  while (q--) {
    int cmd, p, l, r;
    scanf("%d", &cmd);
    if (cmd == 1) {
      scanf("%d", &p);
      if (L <= R) {
        if (p > len() - p) {
          work(get(p + 1), R, 1);
          R = get(p);
          swap(L, R);
        } else {
          work(get(1), get(p), 0);
          L = get(p + 1);
        }
      } else {
        if (p > len() - p) {
          work(R, get(p + 1), 0);
          R = get(p);
          swap(L, R);
        } else {
          work(get(p), get(1), 1);
          L = get(p + 1);
        }
      }
    } else {
      scanf("%d%d", &l, &r);
      l++;
      l = get(l), r = get(r);
      if (l > r) swap(l, r);
      int s = query(r) - query(l - 1);
      printf("%d\n", s);
    }
  }
  return 0;
}
