#include <bits/stdc++.h>
using namespace std;
int n, m, sq, cnt[10005], block[10005], st[10005], ed[10005];
bool flag[10005], fblock[10005];
void change(int l, int r)
{
int lb = block[l], rb = block[r];
if (lb == rb)
{
for (int i = l ; i <= r ; i ++)
{
flag[i] = !flag[i];
if (flag[i])
{
cnt[lb] ++;
}
}
return ;
}
for (int i = l ; i <= ed[lb] ; i ++)
{
flag[i] = !flag[i];
if (flag[i])
{
cnt[lb] ++;
}
}
for (int i = st[rb] ; i <= r ; i ++)
{
flag[i] = !flag[i];
if (flag[i])
{
cnt[rb] ++;
}
}
for (int i = lb + 1 ; i <= rb - 1 ; i ++)
{
fblock[i] = !fblock[i];
cnt[i] = ed[rb - 1] - st[lb + 1] + 1 - cnt[i];
}
}
int fd(int l, int r)
{
int lb = block[l], rb = block[r], ans = 0;
if (lb == rb)
{
for (int i = l ; i <= r ; i ++)
{
if (!fblock[lb])
{
int s = !flag[i];
if (s == 1)
{
ans ++;
}
}
else
{
if (flag[i])
{
ans ++;
}
}
}
return ans;
}
for (int i = l ; i <= ed[lb] ; i ++)
{
if (!fblock[lb])
{
int s = !flag[i];
if (s == 1)
{
ans ++;
}
}
else
{
if (flag[i])
{
ans ++;
}
}
}
for (int i = st[rb] ; i <= r ; i ++)
{
if (!fblock[rb])
{
int s = !flag[i];
if (s == 1)
{
ans ++;
}
}
else
{
if (flag[i])
{
ans ++;
}
}
}
for (int i = lb + 1 ; i <= rb - 1 ; i ++)
{
ans += cnt[i];
}
return ans;
}
int main()
{
cin >> n >> m;
sq = sqrt(n);
for (int i = 1 ; i <= n ; i ++)
{
int s = i / sq + 1;
if (!st[s])
{
st[s] = i;
}
else
{
ed[s] = i;
}
block[i] = s;
}
while (m --)
{
int c, a, b;
scanf("%d%d%d", &c, &a, &b);
if (!c)
{
change(a, b);
}
else
{
printf("%d\n", fd(a, b));
}
}
}