#include<cstdio>
#include<cstring>
using namespace std;
int left[100005], right[100005];
void link(int l, int r)
{
left[r] = l; right[l] = r;
}
int main()
{
int test = 0, op, x, y, temp, n, m;
while (scanf ("%d %d", &n, &m) != EOF)
{
for (int i = 1; i <= n; ++i)
{
right[i] = i + 1;
left[i] = i - 1;
}
right[n] = 0, left[0] = n, right[0] = 1;
int reverse = 0;
while (m--)
{
scanf ("%d", &op);
if (op == 4)
reverse = !reverse;
else
{
scanf ("%d %d", &x, &y);
if ( reverse && op != 3)
{
op = 3 - op; //翻转之后操作一变为把x移到y后面,操作二变为把x移到y前面。
}
if (right[y] == x && op == 3)
{
temp = x;
x = y;
y = temp;
}
if ( (op == 1 && left[y] == x) || (op == 2 && right[y] == x)) continue;
if (op == 1)
{
link (left[x], right[x]);
link (left[y], x);
link (x, y);
}
else if (op == 2)
{
link (left[x], right[x]);
link (x, right[y]);
link (y, x);
}
else if (y == right[x])
{
link (left[x], y);
link (x, right[y]);
link (y, x);
}
else
{
int ry = right[y], ly = left[y];
link (left[x], y);
link (y, right[x]);
link (ly, x);
link (x, ry);
}
}
}
int t = 0; long long ans = 0;
for (int i = 1; i <= n; ++i)
{
t = right[t];
if (i % 2) ans += t;
}
if (n % 2 == 0 && reverse) //偶数位的和
ans = (long long) n / 2 * (1 + n) - ans;
printf ("Case %d: %lld\n", ++test, ans);
}
return 0;
}