#include<iostream>#include<cstring>#include<cstdio>#define For(i,x,y) for(register int i=(x); i<=(y); i++)#define mst(x,a) memset(x,a,sizeof(x))usingnamespace std;constint maxn=1e5+10;int flag,max_num;int f[maxn],vis[maxn];intfind(int x){if(f[x]==-1)return x;return f[x]=find(f[x]);}voidmerge(int u,int v){int uf=find(u);int vf=find(v);
vis[u]=vis[v]=1;
max_num=max(u,max(v,max_num));if(uf==vf)flag=0;else f[uf]=vf;}intmain(){int n,m,kase=0;while(~scanf("%d%d",&n,&m)){
max_num=0;
flag=1;if(n==m&&n==-1)break;mst(vis,0);mst(f,-1);if(n==0){printf("Case %d is a tree.\n",++kase);continue;}merge(n,m);while(scanf("%d%d",&n,&m)&&(n|m))merge(n,m);int cnt=0;For(i,1,max_num)if(vis[i]&&find(i)==i)cnt++;if(cnt==1&&flag)printf("Case %d is a tree.\n",++kase);elseprintf("Case %d is not a tree.\n",++kase);}return0;}