#include<bits/stdc++.h>
using namespace std;
struct Node{
int bj,js;
}a[500001];
long long int b[100001];
void work(int p,int l,int r){
int mid=(l+r)>>1;
if(l==r){
return;
}
work(p*2,l,mid);
work(p*2+1,mid+1,r);
}
void push_up(int p){
a[p].js=a[2*p].js+a[2*p+1].js;
}
void work1(int p,int l,int r,int x,int y){
int mid=(l+r)>>1;
if(x<=l&&y>=r){
a[p].bj^=1;
if(a[p].bj==1){
a[p].js=1;
}
else{
a[p].js=0;
}
return;
}
if(x>mid){
work1(p*2+1,mid+1,r,x,y);
}
else if(y<=mid){
work1(p*2,l,mid,x,y);
}
else{
work1(p*2,l,mid,x,y);
work1(p*2+1,mid+1,r,x,y);
}
push_up(p);
}
int ans(int p,int l,int r,int x,int y){
int mid=(l+r)>>1;
if(x<=l&&y>=r){
return a[p].js;
}
if(x>mid){
return ans(p*2+1,mid+1,r,x,y);
}
else if(y<=mid){
return ans(p*2,l,mid,x,y);
}
else{
return ans(p*2+1,mid+1,r,x,y)+ans(p*2,l,mid,x,y);
}
}
void read(long long &x){
x=0;
int f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
x*=f;
}
int main(){
long long n,m;
read(n);
read(m);
work(1,1,n);
for(int i=1;i<=m;i++){
long long ch,x,y;
read(ch);
if(ch==0){
read(x);
read(y);
work1(1,1,n,x,y);
}
else{
read(x);
read(y);
printf("%d\n",ans(1,1,n,x,y));
}
}
return 0;
}