#include<bits/stdc++.h>
using namespace std;
int w[400001],n,m;
void push_up(int u){
w[u]=w[u*2]+w[u*2+1];
}
bool in_range(int L,int R,int l,int r){
return L>=l&&r>=R;
}
int lazy[400001];
void push_down(int u,int l,int r){
if(!lazy[u]){return;}
w[u]=r-l+1-w[u];
int mid=(l+r)/2;
lazy[u*2]^=1;
lazy[u*2+1]^=1;
if(lazy[u*2])w[u*2]=mid-l+1-w[u*2];
if(lazy[u*2+1])w[u*2+1]=r-mid-w[u*2+1];
lazy[u]=0;
}
int check(int u,int L,int R,int l,int r){
if(in_range(L,R,l,r)){
return w[u];
}
push_down(u,L,R);
int a=0,b=0,mid=(L+R)/2;
if(l<=mid)a=check(u*2,L,mid,l,r);
if(mid<r)b=check(u*2+1,mid+1,R,l,r);
return a+b;
}
void update(int u,int L,int R,int l,int r){
if(in_range(L,R,l,r)){
w[u]=R-L+1-w[u];
lazy[u]^=1;return;
}
push_down(u,L,R);
int mid=(L+R)/2;
if(l<=mid)update(u*2,L,mid,l,r);
if(mid<r)update(u*2+1,mid+1,R,l,r);
push_up(u);
}
int main(){
cin>>n>>m;
int a,b,c;
for(int i=0;i<m;i++){
cin>>c>>a>>b;
if(c){
cout<<check(1,1,n,a,b)<<endl;
}else{
update(1,1,n,a,b);
}
}
return 0;
}