code:
#include<bits/stdc++.h>
using namespace std;
int n,m,c,l,r,t;
int L[352],R[352],pos[100002],add[352],sum[352],a[100002],ans;
int read(){
int x=0,f=0;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=1;
c=getchar();
}
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
return f?-x:x;
}
int main(){
n=read(),m=read();
t=sqrt(n);
for(int i=1;i<=t;++i) L[i]=R[i-1]+1,R[i]=i*t;
if(R[t]<n) ++t,L[t]=R[t]+1,R[t]=n;
for(int i=1;i<=t;++i) for(int j=L[i];j<=R[i];++j) pos[j]=i;
while(m--){
c=read(),l=read(),r=read();
if(c){
//ask
ans=0;
if(pos[l]==pos[r]) for(int i=l;i<=r;++i) ans+=a[i]^add[pos[i]];
else{
for(int i=l;i<=R[pos[l]];++i) ans+=a[i]^add[pos[i]];
for(int i=pos[l]+1;i<pos[r];++i) ans+=(add[i]?((R[i]-L[i]+1)-sum[i]):sum[i]);
for(int i=L[pos[r]];i<=r;++i) ans+=a[i]^add[pos[i]];
}
printf("%d\n",ans);
}else{
//add
if(pos[l]==pos[r]) for(int i=l;i<=r;++i) sum[pos[i]]+=(a[i]^1)-a[i],a[i]^=1;
else{
for(int i=l;i<=R[pos[l]];++i) sum[pos[i]]+=(a[i]^1)-a[i],a[i]^=1;
for(int i=pos[l]+1;i<pos[r];++i) add[i]^=1;
for(int i=L[pos[r]];i<=r;++i) sum[pos[i]]+=(a[i]^1)-a[i],a[i]^=1;
}
}
}
return 0;
}