#include <bits/stdc++.h>
using namespace std;
int be[500005],a[500005],sum[500005],L[500005],R[500005],tag[500005];
int n,m,t;
int getsum(int l,int r){
if (be[l]==be[r]){
int ans=0;
for (register int i=l;i<=r;i++) ans+=a[i]^tag[be[l]];
return ans;
}
int ans=0;
for (register int i=l;i<=R[be[l]];i++) ans+=a[i]^tag[be[l]];
for (register int i=be[l]+1;i<=be[r]-1;i++) ans+=sum[i];
for (register int i=L[be[r]];i<=r;i++) ans+=a[i]^tag[be[r]];
return ans;
}
void change(int l,int r){
if (be[l]==be[r]){
for (register int i=l;i<=r;i++){
sum[i]-=a[i]^tag[be[l]];
a[i]^=1;
sum[i]+=a[i]^tag[be[l]];
}
return ;
}
for (register int i=l;i<=R[be[l]];i++){
sum[i]-=a[i]^tag[be[l]];
a[i]^=1;
sum[i]+=a[i]^tag[be[l]];
}
for (register int i=be[l]+1;i<=be[r]-1;i++) tag[i]^=1,sum[i]=(R[i]-L[i]+1)-sum[i];
for (register int i=L[be[r]];i<=r;i++){
sum[i]-=a[i]^tag[be[r]];
a[i]^=1;
sum[i]+=a[i]^tag[be[r]];
}
}
int main(){
cin >> n >> m;
t=sqrt(n);
int len=n/t;
for (register int i=1;i<=t;i++){
L[i]=(i-1)*len+1;
R[i]=i*len;
}
if (t*t!=n) t++,L[t]=R[t-1]+1,R[t]=n;
for (register int i=1;i<=t;i++){
for (register int j=L[i];j<=R[i];j++) be[j]=i,tag[i]=1;
}
while(m--){
int op;
cin >> op;
if (op==0){
int l,r;
cin >> l >> r;
change(l,r);
}
if (op==1){
int l,r;
cin >> l >> r;
cout << getsum(l,r) << endl;
}
}
}