#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 5;
const long long LINF = 1e18 + 5;
const int maxn = 433333;
int ft[maxn];
void addFT(int r, int val) {
  while (r < maxn) {
    ft[r] += val;
    r |= r + 1;
  }
}
int sumFT(int r) {
  int res = 0;
  while (r >= 0) {
    res += ft[r];
    r = (r & (r + 1)) - 1;
  }
  return res;
}
int l, r, rev;
int getLen() { return r - l + 1; }
int qry(int z) {
  if (!rev) {
    return sumFT(l + z - 1);
  } else {
    return sumFT(r) - sumFT(r - z);
  }
}
int qry(int l, int r) { return qry(r) - qry(l); }
void doCut(int p) {
  int len = getLen();
  vector<int> vals;
  if (p < len - p) {
    if (!rev) {
      for (int i = l + p - 1; i >= l; i--) {
        vals.push_back(sumFT(i) - sumFT(i - 1));
        addFT(i, -vals.back());
      }
      for (int i = 0; i < (int)vals.size(); i++) {
        addFT(l + p + i, vals[i]);
      }
      l = l + p;
    } else {
      for (int i = r - p + 1; i <= r; i++) {
        vals.push_back(sumFT(i) - sumFT(i - 1));
        addFT(i, -vals.back());
      }
      for (int i = 0; i < (int)vals.size(); i++) {
        addFT(r - p - i, vals[i]);
      }
      r = r - p;
    }
  } else {
    if (!rev) {
      p = len - p;
      for (int i = r - p + 1; i <= r; i++) {
        vals.push_back(sumFT(i) - sumFT(i - 1));
        addFT(i, -vals.back());
      }
      for (int i = 0; i < (int)vals.size(); i++) {
        addFT(r - p - i, vals[i]);
      }
      r = r - p;
      rev = 1;
    } else {
      p = len - p;
      for (int i = l + p - 1; i >= l; i--) {
        vals.push_back(sumFT(i) - sumFT(i - 1));
        addFT(i, -vals.back());
      }
      for (int i = 0; i < (int)vals.size(); i++) {
        addFT(l + p + i, vals[i]);
      }
      l = l + p;
      rev = 0;
    }
  }
}
int main() {
  int n, q;
  scanf("%d%d", &n, &q);
  l = 100500, r = n + 100500 - 1, rev = 0;
  for (int i = l; i <= r; i++) addFT(i, 1);
  while (q--) {
    int t, p, l, r;
    scanf("%d", &t);
    if (t == 1) {
      scanf("%d", &p);
      doCut(p);
    } else {
      scanf("%d%d", &l, &r);
      printf("%d\n", qry(l, r));
    }
  }
  return 0;
}
