#include<bits/stdc++.h>
#define reg register int
#define INF (1<<30)
#define int long long
using namespace std;
int read(){
int res=0,fs=1; char c=getchar();
while(!(c>='0' && c<='9')){ if(c=='-')fs=-1; c=getchar(); }
while(c>='0' && c<='9')res=res*10+c-'0',c=getchar();
return res*fs;
}
void print(int x){
if(x<0) { putchar('-'); x=-x;}
if(x>9) print(x/10);
putchar(x%10+'0');
}
int S;
int lazy[200005];
int open[1005],close[1005];
bool a[202020];
int n,cnt,m,ans,tmp,l,r,k,z,x[200005],y[200005],id[200005],v[1010];
inline void sh(int l,int r){
int ll=id[l],rr=id[r];
if(ll==rr){
for(int i=l;i<=r;i++) {
open[ll]-=a[i];
a[i]=!a[i];
open[ll]+=a[i];
}
return ;
}
for(int i=ll+1;i<=rr-1;++i) {
open[i]=S-open[i];
lazy[i]^=1;
}
for(int i=l;i<=y[ll];++i) {
open[ll]-=a[i];
a[i]=!a[i];
open[ll]+=a[i];
}
for(int i=x[rr];i<=r;++i){
open[ll]-=a[i];
a[i]=!a[i];
open[ll]+=a[i];
}
}
inline int cx(int l,int r){
int ll=id[l],rr=id[r];
int ret=0;
if(ll==rr){
for(int i=l;i<=r;i++) ret+=(lazy[ll]^a[i]);
return ret;
}
for(int i=ll+1;i<=rr-1;++i) ret+=open[i];
for(int i=l;i<=y[ll];++i) ret+=(lazy[ll]^a[i]);
for(int i=x[rr];i<=r;++i) ret+=(lazy[rr]^a[i]);
return ret;
}
signed main() {
ios::sync_with_stdio(false);
cin>>n>>m;
S=sqrt(n);
for(int i=1;i<=S;i++){
x[i]=(i-1)*S+1,y[i]=min(i*S,n);
}
if(x[S]<n) S++,x[S]=y[S-1]+1,y[S]=n;
for(int i=1;i<=S;i++){
for(int j=x[i];j<=y[i];j++) {
id[j]=i;
}
}
while(m--){
int op;
cin>>op;
if(op==0){
cin>>l>>r;
sh(l,r);
}else if(op==1){
cin>>l>>r;
cout<<cx(l,r)<<endl;
}
}
return 0;
}