#include <bits/stdc++.h>
using namespace std;
int sum[100010 << 2];
int n, q;
void pushup(int o) { sum[o] = sum[o << 1] + sum[o << 1 | 1]; }
void build(int l, int r, int o) {
  if (l == r) {
    sum[o] = 1;
    return;
  }
  int m = l + r >> 1;
  build(l, m, o << 1);
  build(m + 1, r, o << 1 | 1);
  pushup(o);
}
void update(int l, int r, int o, int p, int x) {
  if (l == r) {
    sum[o] += x;
    return;
  }
  int m = l + r >> 1;
  if (p <= m)
    update(l, m, o << 1, p, x);
  else
    update(m + 1, r, o << 1 | 1, p, x);
  pushup(o);
}
int query(int l, int r, int o, int L, int R) {
  if (L <= l && r <= R) return sum[o];
  int m = l + r >> 1;
  int ans = 0;
  if (L <= m) ans += query(l, m, o << 1, L, R);
  if (m < R) ans += query(m + 1, r, o << 1 | 1, L, R);
  return ans;
}
int main() {
  while (scanf("%d%d", &n, &q) != EOF) {
    int i, p, l, r;
    int curl = 0;
    int curr = n;
    int ok = 0;
    build(1, n, 1);
    for (i = 0; i < q; i++) {
      scanf("%d", &p);
      if (p == 1) {
        scanf("%d", &l);
        int ok1 = 0;
        if (l <= ((curr - curl) >> 1)) ok1 = 1;
        if (ok ^ ok1) {
          if (!ok1) l = curr - curl - l;
          for (int j = 0; j < l; j++) {
            int x = query(1, n, 1, l - j + curl, l - j + curl);
            update(1, n, 1, l + j + curl + 1, x);
          }
          curl += l;
          if (!ok1) ok ^= 1;
        } else {
          if (!ok1) l = curr - l - curl;
          for (int j = 0; j < l; j++) {
            int x = query(1, n, 1, curr - l + j + 1, curr - l + j + 1);
            update(1, n, 1, curr - l - j, x);
          }
          curr -= l;
          if (!ok1) ok ^= 1;
        }
      } else {
        scanf("%d%d", &l, &r);
        if (!ok)
          printf("%d\n", query(1, n, 1, curl + l + 1, curl + r));
        else
          printf("%d\n", query(1, n, 1, curr - r + 1, curr - l));
      }
    }
  }
  return 0;
}
