#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ld long double
using namespace std;
int n;
int m;
int arr[200005];
int ed[200005];
int st[200005];
int belong[200005];
int delta[20005];
int ans1[20005];
int num;
void modify(int l,int r){
int x=belong[l];
int y=belong[r];
if(x==y){
for(int i=l;i<=r;i++){
ans1[x]-=(arr[i]^delta[x]);
arr[i]^=1;
ans1[x]+=(arr[i]^delta[x]);
}
return;
}
for(int i=l;i<=ed[x];i++){
ans1[x]-=(arr[i]^delta[x]);
arr[i]^=1;
ans1[x]+=(arr[i]^delta[x]);
}
for(int i=st[y];i<=r;i++){
ans1[y]-=(arr[i]^delta[y]);
arr[i]^=1;
ans1[y]+=(arr[i]^delta[y]);
}
for(int i=x+1;i<y;i++){
delta[i]^=1;
ans1[i]=num-ans1[i];
}
}
int answer(int l,int r){
int x=belong[l];
int y=belong[r];
int ans=0;
if(x==y){
for(int i=l;i<=r;i++){
ans+=(arr[i]^delta[x]);
}
}
else {
for(int i=l;i<=ed[x];i++){
ans+=(arr[i]^delta[x]);
}
for(int i=st[y];i<=r;i++){
ans+=(arr[i]^delta[y]);
}
for(int i=x+1;i<y;i++){
ans+=ans1[i];
}
}
return ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
num = sqrt(n);
for (int i = 1; i <= num; i++)
st[i] = n / num * (i - 1) + 1, ed[i] = n / num * i;
ed[num] = n;
for (int i = 1; i <= num; i++) {
for (int j = st[i]; j <= ed[i]; j++) {
belong[j] = i;
}
}
while(m--){
int l,r,c;
cin>>c>>l>>r;
if(c==0) modify(l,r);
if(c==1){
cout<<answer(l,r)<<endl;
}
}
}