1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <vector>
5 using namespace std;
6
7 int n,len;
8 char name[201][101];
9 int dp[201][2];
10 int special[201][2];
11 vector <int> G[201];
12
13 int max(int a,int b)
14 {
15 if(a > b) return a;
16 return b;
17 }
18
19 int find(char *str)
20 {
21 int i = 0;
22 while(i < len && strcmp(str,name[i]) != 0)
23 i++;
24 if(i == len) return -1;
25 return i;
26 }
27
28 int insert(char *str)
29 {
30 strcpy(name[len],str);
31 len++;
32 return len - 1;
33 }
34
35 void init()
36 {
37 int i;
38 for(i = 0;i <= n;i++)
39 G[i].clear();
40 memset(name,0,sizeof(name));
41 memset(dp,0,sizeof(dp));
42 memset(special,0x1,sizeof(special));
43 len = 0;
44 }
45
46 void dfs(int v)
47 {
48 for(vector<int>::size_type i = 0;i < G[v].size();i++)
49 {
50 int u = G[v][i];//u是v的儿子节点
51 dfs(u);
52 dp[v][0] += max(dp[u][0],dp[u][1]);
53 dp[v][1] += dp[u][0];
54
55 if(dp[u][0] == dp[u][1])
56 special[v][0] = 0;
57 else if(dp[u][0] > dp[u][1] && special[v][0])
58 special[v][0] = special[u][0];
59 else if(dp[u][0] < dp[u][1] && special[v][0])
60 special[v][0] = special[u][1];
61 if(special[v][1])
62 special[v][1] = special[u][0];
63 }
64 dp[v][1]++;
65 }
66
67 int main()
68 {
69 char str[101];
70 while(scanf("%d",&n),n)
71 {
72 init();
73 scanf("%s",str);
74 insert(str);
75 int p,q;
76
77 for(int i = 1;i < n;i++)
78 {
79 scanf("%s",str);
80 if((p = find(str)) == -1)
81 p = insert(str);
82 scanf("%s",str);
83 if((q = find(str)) == -1)
84 q = insert(str);
85 G[q].push_back(p);
86 }
87
88 dfs(0);
89
90 int ans = max(dp[0][1],dp[0][0]);
91 printf("%d ",ans);
92
93 if(dp[0][0] == dp[0][1])
94 printf("No\n");
95 else if(dp[0][0] == ans && special[0][0] == 0)
96 printf("No\n");
97 else if(dp[0][1] == ans && special[0][1] == 0)
98 printf("No\n");
99 else
100 printf("Yes\n");
101 }
102 return 0;
103 }