#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
#define int ull
const int mxn=1e6+5;
int prv[mxn],nxt[mxn];
bool rev;
int n,m;
void init(){
for(int i=1;i<=n;++i){
prv[i]=i-1;
nxt[i]=i+1%(n+1);
}
nxt[0]=1;prv[0]=n;rev=0;
return;
}
signed main(){
freopen("uva.out","w",stdout);
int cas=1;
while(cin>>n>>m){
init();
while(m--){
int opt,x,y;
cin>>opt;
if(opt<=2&&rev==1)opt=3-opt;
if(opt==4){
rev=!rev;
}else if(opt==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(opt==2){
cin>>x>>y;
if(nxt[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;
prv[x]=y;
nxt[x]=ny;
nxt[y]=x;
prv[ny]=x;
}else if(opt==3){
cin>>x>>y;
if(nxt[y]==x)swap(x,y);
int px=prv[x];
int nx=nxt[x];
int py=prv[y];
int ny=nxt[y];
if(nxt[x]==y){
nxt[px]=y;
prv[ny]=x;
prv[y]=px;
nxt[y]=x;
prv[x]=y;
nxt[x]=ny;
} else{
prv[x]=py;
nxt[x]=ny;
nxt[px]=nx;
prv[nx]=px;
prv[y]=px;
nxt[y]=nx;
nxt[py]=ny;
prv[ny]=py;
}
}
}
int ans=0LL;
int b=0LL;
for(int i=1;i<=n;++i){
b=nxt[b];
if(i%2==1)ans+=i;
}
if(rev&&n%2==0)ans=n*(1+n)/2-ans;
printf("Case %lld: %lld\n",cas++,ans);
}
return 0;
}