#include<bits/stdc++.h>
#define int long long
using namespace std;
bool a[114514],lazytag[114514];
int s[114514],t[114514],in[114514];
int val[114514];
signed main(){
int n,q,sqn;
cin>>n>>q;
sqn=sqrt(n);
for(int i=1;i<=sqn;i++){
s[i]=(i-1)*sqn+1,t[i]=i*sqn;
}
t[sqn]=n;
for(int i=1;i<=sqn;i++){
for(int j=s[i];j<=t[i];j++){
in[j]=i;
}
}
while(q--){
int op,l,r;
cin>>op>>l>>r;
if(op==0){
if(in[l]==in[r]){
for(int i=l;i<=r;i++){
val[i]-=a[i]^lazytag[in[i]];
a[i]^=1;
val[i]+=a[i]^lazytag[in[i]];
}
}
else{
for(int i=l;i<=t[in[l]];i++){
val[i]-=a[i]^lazytag[in[i]];
a[i]^=1;
val[i]+=a[i]^lazytag[in[i]];
}
for(int i=s[in[r]];i<=r;i++){
val[i]-=a[i]^lazytag[in[i]];
a[i]^=1;
val[i]+=a[i]^lazytag[in[i]];
}
for(int i=in[l]+1;i<in[r];i++){
lazytag[i]^=1;
val[i]=(t[i]-s[i]+1)-val[i];
}
}
}
else{
int ans=0;
if(in[l]==in[r]){
for(int i=l;i<=r;i++){
ans+=a[i]^lazytag[in[i]];
}
}
else{
for(int i=l;i<=t[in[l]];i++){
ans+=a[i]^lazytag[in[i]];
}
for(int i=s[in[r]];i<=r;i++){
ans+=a[i]^lazytag[in[i]];
}
for(int i=in[l]+1;i<in[r];i++){
ans+=val[i];
}
}
cout<<ans<<endl;
}
}
return 0;
}