#include<bits/stdc++.h>
#define int long long
#define N 200005
#define M 2005
using namespace std;
inline int read()
{
int x=0,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-'0',ch=getchar();
return x*f;
}
void write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
int la[N],belong[N],tag[M];
int len,num;
int n,m,c,a,b;
void init(){
len=sqrt(n);
num=ceil(n/len);
memset(tag,0,sizeof(tag));
memset(la,0,sizeof(la));
for(int i=1;i<=num;i++){
for(int j=(i-1)*len+1;j<=i*len;j++) belong[j]=i;
}
}
void change(int l,int r){
if(belong[l]==belong[r]){
for(int i=l;i<=r;i++){
la[i]=(la[i]+1)%2;
}
return;
}else{
for(int i=l;i<=belong[l]*len;i++){
la[i]=(la[i]+1)%2;
}
for(int i=belong[l]*len+1;i<=(belong[r]-1)*len;i++){
tag[i]=(tag[i]+1)%2;
}
for(int i=(belong[r]-1)*len+1;i<=r;i++){
la[i]=(la[i]+1)%2;
}
return;
}
}
int chack(int l,int r){
int ans=0;
if(belong[l]==belong[r]){
if(tag[belong[l]]==1){
for(int i=l;i<=r;i++){
ans+=(la[i]==0?1:0);
}
}else{
for(int i=l;i<=r;i++){
ans+=la[i];
}
}
return ans;
}else{
for(int i=l;i<=len*belong[l];i++){
ans+=(tag[belong[i]]==1?(la[i]==0?1:0):la[i]);
}
for(int i=belong[l]*len+1;i<(belong[r]-1)*len;i++){
ans+=(tag[belong[i]]==1?(la[i]==0?1:0):la[i]);
}
for(int i=(belong[r]-1)*len+1;i<=r;i++){
ans+=(tag[belong[i]]==1?(la[i]==0?1:0):la[i]);
}
return ans;
}
}
signed main(){
cin>>n>>m;
init();
for(int i=0;i<m;i++){
cin>>c>>a>>b;
if(c==0){
change(a,b);
for(int i=1;i<=n;i++) cout<<la[i]<<" ";
cout<<endl;
}else{
cout<<chack(a,b)<<endl;
}
}
return 0;
}