#include<iostream> #include<cstdio> using namespace std; int n,m,sum[400001]; bool rever[400001]; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x*=10;x+=ch-'0';ch=getchar();} return x*f; } void pushdown(int k,int l,int r){ if(rever[k]){ rever[k<<1]^=1; rever[k<<1|1]^=1; int mid=(l+r)>>1; sum[k<<1]=mid-l+1-sum[k<<1]; sum[k<<1|1]=r-mid-sum[k<<1|1]; rever[k]=0; } } void pushup(int k){ sum[k]=sum[k<<1]+sum[k<<1|1]; } void rev(int k,int L,int R,int l,int r){ if(L<=l&&R>=r){ rever[k]^=1; sum[k]=r-l+1-sum[k]; return; } pushdown(k,l,r); int mid=(l+r)>>1; if(L<=mid)rev(k<<1,L,R,l,mid); if(R>mid)rev(k<<1|1,L,R,mid+1,r); pushup(k); } int ask(int k,int L,int R,int l,int r){ if(L<=l&&R>=r)return sum[k]; pushdown(k,l,r); int ret=0,mid=(l+r)>>1; if(L<=mid)ret+=ask(k<<1,L,R,l,mid); if(R>mid)ret+=ask(k<<1|1,L,R,mid+1,r); return ret; } int main(){ n=read();m=read(); for(int i=1;i<=m;i++){ int a=read(),b=read(),c=read(); if(a==0)rev(1,b,c,1,n); if(a==1)printf("%d\n",ask(1,b,c,1,n)); } return 0; }