#include<iostream>
using namespace std;
const int Max=1e5+1;
int sum[4*Max],tag[4*Max];
void update(int l,int r,int m,int p){
tag[2*p]=1;tag[2*p+1]=1;
sum[2*p]=(m-l+1-sum[2*p]);sum[2*p+1]=(r-m-sum[2*p+1]);
tag[p]=0;
}
void add(int l,int r,int L,int R,int p){
if(l<=L&&r>=R){
sum[p]=(R-L+1-sum[p]);
if(tag[p]==1){
tag[p]=0;
}else{
tag[p]=1;
}
return;
}
int m=(L+R)/2;
if(tag[p]){
update(L,R,m,p);
}
if(l<=m)add(l,r,L,m,2*p);
if(r>m)add(l,r,m+1,R,2*p+1);
sum[p]=sum[2*p]+sum[2*p+1];
}
int query(int l,int r,int L,int R,int p){
if(l<=L&&r>=R){
return sum[p];
}
int ans=0;
int m=(L+R)/2;
if(tag[p]){
update(L,R,m,p);
}
int sum=0;
if(l<=m)sum=query(l,r,L,m,2*p);
if(r>m)sum+=query(l,r,m+1,R,2*p+1);
return sum;
}
int main(){
int n,m;
cin>>n>>m;
while(m--){
int opt,l,r;
cin>>opt>>l>>r;
if(opt==0){
add(l,r,1,n,1);
}else{
cout<<query(l,r,1,n,1)<<endl;
}
}
}