#include<bits/stdc++.h>
using namespace std;
const int maxn=200000+5;
typedef unsigned long long AC;
AC box[maxn];
AC nxt[maxn];
AC data[maxn];
AC prv[maxn];
bool rev;
AC n,m;
int main()
{
AC kas=0;
while((scanf("%d%d",&n,&m))==2)
{
for(int i=1;i<=n;i++)
{
prv[i]=i-1;
nxt[i]=i+1%(n+1);
}
nxt[0]=1;
prv[0]=n;
rev=false;
AC x,y;
AC op;
while(m--)
{
cin>>op;
if(rev&&op<=2) op=3-op;
if(op==4)
{
rev=!rev;
}
else if(op==1)
{
cin>>x>>y;
if(prv[y]==x)
{
continue;
}
int px=prv[x];
int nx=nxt[x];
int py=prv[y];
int ny=nxt[y];
nxt[px]=nx;
prv[nx]=px;
nxt[x]=y;
prv[x]=py;
nxt[py]=x;
prv[y]=x;
}
else if(op==2)
{
cin>>x>>y;
if(prv[y]==x)
{
continue;
}
int px=prv[x];
int nx=nxt[x];
int py=prv[y];
int ny=nxt[y];
nxt[px]=nx;
prv[nx]=px;
nxt[x]=ny;
prv[x]=y;
prv[ny]=x;
nxt[y]=x;
}
else if(op==3)
{
cin>>x>>y;
if(prv[y]==x)
{
continue;
}
int px=prv[x];
int nx=nxt[x];
int py=prv[y];
int ny=nxt[y];
if(nxt[x]==y)
{
nxt[px]=nx;
prv[nx]=px;
nxt[x]=ny;
prv[x]=y;
prv[ny]=x;
nxt[y]=x;
}
else
{
prv[x]=py;
nxt[x]=ny;
prv[ny]=x;
nxt[px]=y;
prv[y]=px;
nxt[y]=nx;
nxt[px]=y;
prv[ny]=py;
}
}
}
AC sum=0,k=0;
for(long long i=0;i<=n;i++)
{
k=nxt[k];
if(i%2==1)sum+=i;
}
if(rev&&n%2==0)sum=n*(1+n)/2-sum;
cout<<"Case "<<++kas<<": "<<sum<<endl;
sum=0;
}
}