#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 200005;
int n, m, a[N], l[N], r[N], sum[N], cnt, kk;
bool f[N];
int op;
void update(int x, int y)
{
for (int i = 1; i <= cnt; i++)
{
if (l[i] >= x && r[i] <= y)
f[i] = !f[i];
else if (r[i] >= x && l[i] <= x)
{
if (f[i])
{
for (int j = l[i]; j < x; j++)
a[j] = !a[j];
f[i] = false;
sum[i] = 0;
for (int j = l[i]; j <= r[i]; j++)
sum[i] += a[j];
}
else
{
for (int j = x; j <= r[i]; j++)
a[j] = !a[j];
f[i] = false;
sum[i] = 0;
for (int j = l[i]; j <= r[i]; j++)
sum[i] += a[j];
}
}
else if (l[i] <= y && y <= r[i])
{
if (f[i])
{
for (int j = y + 1; j <= r[i]; j++)
a[j] = !a[j];
f[i] = false;
sum[i] = 0;
for (int j = l[i]; j <= r[i]; j++)
sum[i] += a[j];
}
else
{
for (int j = l[i]; j <= y; j++)
a[i] = !a[i];
f[i] = false;
sum[i] = 0;
for (int j = l[i]; j <= r[i]; j++)
sum[i] += a[j];
}
}
}
}
int query(int x, int y)
{
int p = 0;
for (int i = 1; i <= cnt; i++)
{
if (l[i] >= x && r[i] <= y)
{
if (f[i])
p += r[i] - l[i] + 1 - sum[i];
else
p += sum[i];
}
else if (r[i] >= x && l[i] <= x)
{
if (f[i])
{
sum[i] = 0;
for (int j = l[i]; j <= r[i]; j++)
{
a[j] = !a[j];
sum[i] += a[j];
if (j >= x && j <= y)
p += a[j];
}
f[i] = false;
}
else
for (int j = x; j <= r[i]; j++)
p += a[j];
}
else if (l[i] <= y && r[i] >= y)
{
if (f[i])
{
sum[i] = 0;
for (int j = l[i]; j <= r[i]; j++)
{
a[j] = !a[j];
sum[i] += a[j];
if (j >= x && j <= y)
p += a[j];
}
f[i] = false;
}
else
for (int j = l[i]; j <= y; j++)
p += a[j];
}
}
return p;
}
signed main()
{
scanf("%lld%lld", &n, &m);
kk = sqrt(n);
for (int i = 1; i <= n; i += kk)
{
l[++cnt] = i;
r[cnt] = min(i + kk - 1, n);
}
int x, y;
while(m--)
{
scanf("%lld%lld%lld", &op, &x, &y);
if (!op)
update(x, y);
else
printf("%lld\n", query(x, y));
}
}