#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int x=0;char c;
while((c=getchar())>='0' && c<='9')
x=x*10+c-48;
return x;
}
int n,m;
const int N=1e5+10;
int la[4*N],sum[4*N];
void build(int k,int l,int r)
{
if(l==r)
{
sum[k]=0;
return;
}
int mid=l+r>>1;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
sum[k]=sum[k<<1]+sum[k<<1|1];
return ;
}
void lazy(int k,int l,int r,int v)
{
la[k]^=v;
sum[k]=r-l+1-sum[k];
return ;
}
void pushdown(int k,int l,int r)
{
if(!la[k])return ;
int mid=l+r>>1;
lazy(k<<1,l,mid,la[k]);
lazy(k<<1|1,mid+1,r,la[k]);
la[k]=0;
return ;
}
void change(int k,int l,int r,int x,int y,int v)
{
if(x>r || y<l) return ;
if(x<=l && r<=y)
{
lazy(k,l,r,v);
return ;
}
pushdown(k,l,r);
int mid=l+r>>1;
change(k<<1,l,mid,x,y,v);
change(k<<1|1,mid+1,r,x,y,v);
sum[k]=sum[k<<1]+sum[k<<1|1];
return ;
}
int add(int k,int l,int r,int x,int y)
{
if(x>r||y<l)return 0;
if(x<=l && r<=y)
return sum[k];
pushdown(k,l,r);
int mid=l+r>>1;
return add(k<<1,l,mid,x,y)+add(k<<1|1,mid+1,r,x,y);
}
int main()
{
n=read(),m=read();
build(1,1,n);
while(m--)
{
int c,a,b;
c=read(),a=read(),b=read();
if(c==0)
change(1,1,n,a,b,1);
if(c==1)
printf("%d\n",add(1,1,n,a,b));
}
return 0;
}