##includein <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=100005;
int fa[maxn<<1],size[maxn<<1],mapped[2*maxn],hui[2*maxn];
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int n,m,x,y,fx,fy,cnt,next;
int getfa(int x){
if(fa[x]==x)return x;
return fa[x]=getfa(fa[x]);
}
inline void gai(int yuan,int now){
mapped[yuan]=now;
hui[now]=yuan;
}
int main(){
int t;
t=read();
for(int k=1;k<=t;k++){
printf("Case #%d:\n",k);
memset(mapped,0,sizeof(mapped));
memset(hui,0,sizeof(hui));
n=read();m=read();
for(int i=1;i<=n;i++){fa[i]=i;size[i]=1;mapped[i]=i;}
cnt=n;
int shu_bangpai=n;
for(int i=1;i<=m;i++){
string s;
cin>>s;
if(s=="query")printf("%d\n",shu_bangpai);
if(s=="fight"){
x=read();y=read();
fx=getfa(mapped[x]);fy=getfa(mapped[y]);
if(fx==fy)continue;
if(size[fx]==size[fy]){
printf("Either is winner!\n");
continue;
}
shu_bangpai--;
if(size[fx]>size[fy]){
size[fx]+=size[fy];
fa[fy]=fx;
printf("%d is winner!\n",x);
continue;
}
if(size[fx]<size[fy]){
size[fy]+=size[fx];
fa[fx]=fy;
printf("%d is winner!\n",y);
continue;
}
}
if(s=="tempt"){//x诱惑y
x=read();y=read();
fx=getfa(mapped[x]),fy=getfa(mapped[y]);
if(fx==fy)continue;
if(size[fy]==1)shu_bangpai--;
mapped[y]=++cnt;
fa[mapped[y]]=mapped[x];
size[fx]++;
size[fy]--;
}
if(s=="revolt"){//反叛,传位。
x=read();
fx=getfa(mapped[x]);
if(size[fx]==1)continue;
size[fx]--;
mapped[x]=++cnt;
fa[mapped[x]]=mapped[x];
size[mapped[x]]=1;
shu_bangpai++;
}
}
}
}