#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,a[N],b[N],c[N],id[N],len;
void opc(int i){
if(a[i]*b[id[i]]==1){
c[id[i]]++;
}else{
c[id[i]]--;
}
}
void change(int l,int r){
int sid=id[l],eid=id[r];
if(sid==eid){
for(int i=l;i<=r;i++){
a[i]=-a[i];
opc(i);
}
}else{
for(int i=l;id[i]==sid;i++){
a[i]=-a[i];
opc(i);
}
for(int i=sid+1;i<eid;i++){
b[i]=-b[i];
c[i]=len-c[i];
}
for(int i=r;id[i]==eid;i--){
a[i]=-a[i];
opc(i);
}
}
}
int query(int l,int r){
int sid=id[l],eid=id[r];
int ans=0;
if(sid==eid){
for(int i=l;i<=r;i++){
if(a[i]*b[sid]==1){
ans++;
}
}
}else{
for(int i=l;id[i]==sid;i++){
if(a[i]*b[sid]==1){
ans++;
}
}
for(int i=sid+1;i<eid;i++){
if(b[i]==-1){
ans+=(len-c[i]);
}else{
ans+=c[i];
}
}
for(int i=r;id[i]==eid;i--){
if(a[i]*b[sid]==1){
ans++;
}
}
}
return ans;
}
int main(){
cin>>n>>m;
len=sqrt(n);
for(int i=1;i<=n;i++){
a[i]=-1,b[i]=1;
id[i]=(i-1)/len+1;
}
int c,a,b;
for(int i=1;i<=m;i++){
cin>>c;
if(c==0){
cin>>a>>b;
change(a,b);
}else{
cin>>a>>b;
cout<<query(a,b)<<endl;
}
}
return 0;
}