#include <cstdio>
using namespace std;
#define ls(p) (p << 1)
#define rs(p) (p << 1 | 1)
#define int long long
int t[400005], tag[400005];
void add_tag (int p, int pl, int pr) {
tag[p] = 1;
t[p] = (pr - pl + 1) - t[p];
}
void push_down (int p, int pl, int pr) {
if (tag[p]) {
int mid = (pl + pr) / 2;
add_tag (ls(p), pl, mid);
add_tag (rs(p), mid + 1, pr);
tag[p] = 0;
}
}
void Update (int l, int r, int p, int pl, int pr) {
if (l <= pl && pr <= r) {
add_tag (p, pl, pr);
return ;
}
push_down(p, pl, pr);
int mid = (pl + pr) / 2;
if (l <= mid) {
Update (l, r, ls(p), pl, mid);
}
if (r > mid) {
Update (l, r, rs(p), mid + 1, pr);
}
t[p] = t[ls(p)] + t[rs(p)];
}
int count (int l, int r, int p, int pl, int pr) {
if (l <= pl && pr <= r) {
return t[p];
}
push_down(p, pl, pr);
int res = 0;
int mid = (pl + pr) / 2;
if (l <= mid) {
res += count (l, r, ls(p), pl, mid);
}
if (r > mid) {
res += count (l, r, rs(p), mid + 1, pr);
}
return res;
}
signed main () {
int n, m;
scanf ("%lld %lld", &n, &m);
while (m--) {
int c, a, b;
scanf ("%d %d %d", &c, &a, &b);
if (c == 0) {
Update(a, b, 1, 1, n);
} else {
printf("%d\n", count(a, b, 1, 1, n));
}
}
return 0;
}