#include<bits/stdc++.h>
using namespace std;
const int N = 200005;
int bz;
int a[N], q[N];
int res[N], sum[N];
void update(int l, int r){
for(int i=l; i<=min(q[l]*bz, r); i++){
if(a[i] == 0){
res[q[i]]++;
a[i] = 1;
}else {
res[q[i]]--;
a[i] = 0;
}
}
if(q[l] != q[r]){
for(int i=(q[r]-1)*bz + 1; i<=r; i++){
if(a[i] == 0){
res[q[i]]++;
a[i] = 1;
}else {
res[q[i]]--;
a[i] = 0;
}
}
}
for(int i=q[l]+1; i<=q[r]-1; i++){
res[i] = bz - res[i];
sum[i]++;
}
}
int query(int l, int r){
int s = 0;
for(int i=l; i<=min(q[l]*bz, r); i++){
if((a[i] + sum[q[i]]) % 2 == 1){
s++;
}
}
if(q[l] != q[r]){
for(int i=(q[r]-1)*bz + 1; i<=r; i++){
if((a[i] + sum[q[i]]) % 2 == 1){
s++;
}
}
}
for(int i=q[l]+1; i<=q[r]-1; i++){
s += res[i];
}
return s;
}
int main(){
int n, m, op, l, r;
scanf("%d%d", &n, &m);
bz = sqrt(1.0 * n);
for(int i=1; i<=n; i++){
q[i] = (i - 1) / bz + 1;
}
for(int i=1; i<=m; i++){
scanf("%d%d%d", &op, &l, &r);
if(op == 0){
update(l, r);
}else {
printf("%d\n", query(l, r));
}
}
return 0;
}