#include<cstdio>#include<map>#include<set>using namespace std;namespace{set<int> S;int find_root(map<int, int> &M, int node){if (S.find(node) != S.end())return -1;if (M.find(node) != M.end()){S.insert(node);return find_root(M, M[node]);}return node;}}int main(){int from, to, cs = 0;map<int, int> M;while (scanf("%d%d", &from, &to), from != -1 && to != -1){M.clear();M[to] = from;bool tree = true;if (!from && !to){printf("Case %d is a tree.n", ++cs);continue;}if (to == from)tree = false;while (scanf("%d%d", &from, &to), from || to){if (tree){if (M.find(to) != M.end() || to == from){tree = false;continue;}M[to] = from;}}if (tree){int root = -1;for (map<int, int>::iterator it = M.begin(); it != M.end(); it++){S.clear();int temp = find_root(M, (*it).second);if (temp == -1){tree = false;break;}if (root == -1)root = temp;else if (root != temp){tree = false;break;}}}printf("Case %d is %sa tree.n", ++cs, tree ? "" : "not ");}return 0;}


