#include<bits/stdc++.h>
using namespace std;
#define f(i,a,b) for(int i = a;i<=b;i++)
#define f_(i,a,b) for(int i = a;i>=b;i--)
typedef long long ll;
typedef unsigned long long ull;
const int N =1e5+10;
int sum[N*4],add[N*4];
int n,q,c,a,b;
void pushup(int k){
sum[k] = sum[k<<1|1] + sum[k<<1];
}
void pushdown(int k,int l,int r){
if(add[k] == 0)return ;
add[k<<1]^=1;
add[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];
add[k] = 0;
}
void update(int k,int l,int r,int x,int y){
if(x<=l && y >= r){
sum[k] = (r-l+1) - sum[k];
add[k]^=1;
return ;
}
pushdown(k,1,r);
int mid = l+r>>1;
if(x<=mid)update(k<<1,l,mid,x,y);
if(y>= mid+1)update(k<<1|1,mid+1,r,x,y);
pushup(k);
}
int query(int k,int l,int r,int x,int y){
if(x<=l && y>=r){
return sum[k];
}
pushdown(k,l,r);
int a = 0,b = 0,mid = l+r>>1;
if(x<=mid)a = query(k<<1,l,mid,x,y);
if(y>=mid+1)b = query(k<<1|1,mid+1,r,x,y);
return a+b;
}
int main(){
cin>>n>>q;
while(q--){
scanf("%d%d%d",&c,&a,&b);
if(c == 0){
update(1,1,n,a,b);
}else{
printf("%d\n",query(1,1,n,a,b));
}
}
return 0;
}