#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int a[N],l[N],r[N],pos[N],sum[N],lazy[N];
int t,p,n,m;
char f;
void update(int x,int y){
int p=pos[x],q=pos[y];
if(p==q){
for(int i=x;i<=y;++i){
if(a[i]==0) sum[p]++,a[i]=1;
else a[i]=0,sum[p]--;
}
return;
}
for(int i=p+1;i<=q-1;++i) lazy[i]++;
for(int i=x;i<=r[p];++i){
if(a[i]==0) sum[p]++,a[i]=1;
else a[i]=0,sum[p]--;
}
for(int i=l[q];i<=y;++i){
if(a[i]==0) sum[q]++,a[i]=1;
else a[i]=0,sum[q]--;
}
return;
}
int search(int x,int y){
int p=pos[x],q=pos[y];
int ans=0;
if(p==q){
for(int i=x;i<=y;++i) ans+=(a[i]+lazy[i])%2;
return ans;
}
for(int i=x;i<=r[p];++i) ans+=(a[i]+lazy[i])%2;
for(int i=l[q];i<=y;++i) ans+=(a[i]+lazy[i])%2;
for(int i=p+1;i<=q-1;++i)
lazy[i]%2==0?ans+=sum[i]:ans+=r[i]-l[i]+1-sum[i];
return ans;
}
int main(){
scanf("%d%d",&n,&m);
t=sqrt(n);
for(int i=1;i<=t;++i){
l[i]=t*(i-1)+1,r[i]=t*i;
for(int j=l[i];j<=r[i];++j) pos[j]=i;
}
if(r[t]<n){
l[1+t]=r[t]+1,r[t+1]=n,t+=1;
for(int j=l[t];j<=r[t];++j) pos[j]=t;
}
while(m--){
cin>>f;
int x,y;
int k;scanf("%d%d",&x,&y);
if(f=='0')update(x,y);
else printf("%d\n",search(x,y));
}
return 0;
}