#include<bits/stdc++.h>
using namespace std;
int n,m;
long long lt[200002];
bool lz[200002];
void update(int id){
lt[id]=lt[id*2]+lt[id*2+1];
}
void down(long long l,long long r,long long mid,int id){
if(lz[id]){
lt[id*2]=mid-l+1-lt[id*2];
lt[id*2+1]=r-mid-lt[id*2+1];
lz[id*2]^=1;
lz[id*2+1]^=1;
lz[id]=0;
}
}
void change(long long l,long long r,long long x,long long y,int id){
if(l>=x and r<=y){
lt[id]=r-l+1-lt[id];
lz[id]^=1;
return ;
}
long long mid=(l+r)/2;
down(l,r,mid,id);
if(x<=mid){
change(l,mid,x,y,id*2);
}
if(mid>y){
change(mid+1,r,x,y,id*2+1);
}
update(id);
}
int fund(long long l,long long r,long long x,long long y,int id){
if(l>=x and r<=y){
return lt[id];
}
long long ans=0;
long long mid=(l+r)/2;
down(l,r,mid,id);
if(mid>=x){
ans+=fund(l,mid,x,y,id*2);
}
if(mid<y){
ans+=fund(mid+1,r,x,y,id*2+1);
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);
while(m--){
long long a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
if(a){
printf("%lld\n",fund(1,n,b,c,1));
}
else{
change(1,n,b,c,1);
}
}
return 0;
}