using namespace std;
#define ll long long
ll
L[100010],R[100010],add[100010],a[100010],pos[100010];
void change(int b,int c){
int p=pos[b],q=pos[c];
if(pos[b]==pos[c])
{
for(int i=b;i<=c;i++){
a[i]=(a[i]+1)%2;
}
}
else
{
for(int i=pos[b]+1;i<=pos[c]-1;i++)
add[i]++;
for(int i=b;i<=R[pos[b]];i++)
a[i]=(a[i]+1)%2;
for(int i=L[pos[c]];i<=c;i++)
a[i]=(a[i]+1)%2;
}
}
int find(int b,int c){
ll ans=0;
for(int i=b;i<=c;i++)+
{
if ((a[i]+add[pos[i]])%2==1){
ans++;
}
}
return ans;
}
int main(){
ll n,m;
memset(a,0,sizeof(a));
scanf("%lld%lld",&n,&m);
int t=sqrt(n);
for(int i=1;i<=t;i++){
L[i]=(i-1)*t+1;R[i]=i*t;
}
if (R[t]<n){
t++;L[t]=R[t-1]+1;R[t]=n;
}
for(int i=1;i<=t;i++){
for(int j=L[i];j<=R[i];j++){
pos[j]=i;
}
}
for(int i=1;i<=m;i++){
ll kkk,b,c;
scanf("%lld%lld%lld",&kkk,&b,&c);
if(kkk==0){
change(b,c);
} else
{
printf("%d\n",find(b,c));
}
}
return 0;
}