#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<vector>
int x,y,set[100010],flag,cas,rt;
int find(int x)
{
return x==set[x]?x:set[x]=find(set[x]);
}
void Union(int x,int y)
{
int ux,uy;
ux=find(x),uy=find(y);
if(ux!=uy)
set[ux]=uy;
}
int main()
{
cas=0;
while(1)
{
flag=1,rt=0;
cas++;
memset(set,0,sizeof(set));
while(scanf("%d%d",&x,&y)&&x!=0&&y!=0)
{
if(x==-1&&y==-1) return 0;
if(set[x]==0) set[x]=x;
if(set[y]==0) set[y]=y;
if(find(x)==find(y)) flag=0;
else if(flag) Union(x,y);
}
for(int i=1;i<=100000;i++)
if(set[i]==i)
rt++;
if(rt>1||!flag)
printf("Case %d is not a tree.\n",cas);
else
printf("Case %d is a tree.\n",cas);
}
}