#include<bits/stdc++.h>
using namespace std;
#define maxn 300
vector<int> v[maxn];
int d[maxn][2],f[maxn][2];
map<string,int>mp;
void dfs(int n)
{
if(v[n].size()==0)
{
d[n][0]=0;
d[n][1]=1;
return ;
}
for(int i = 0; i < v[n].size(); i++)
{
int m = v[n][i];
dfs(m);
if(f[m][0]) f[n][1]=1;
d[n][1]+=d[m][0];
if(d[m][0]>d[m][1])
{
d[n][0]+=d[m][0];
if(f[m][0]) f[n][0]=1;
}
else
{
d[n][0]+=d[v[n][i]][1];
if(d[m][0]==d[m][1])
f[n][0]=1;//bu wei yi
}
}
d[n][1]++;
}
int main()
{
int n;
string s1,s2;
while(~scanf("%d",&n))
{
if(n==0) break;
for(int i=0;i<=n;i++)
v[i].clear();
int top=1;
memset(d,0,sizeof(d));
memset(f,0,sizeof(f));
cin>>s1;
mp[s1]=top++;
for(int i = 0; i < n-1; i++)
{
cin >>s1>>s2;
if(!mp[s1]) mp[s1]=top++;
if(!mp[s2]) mp[s2]=top++;
v[mp[s2]].push_back(mp[s1]);
}
dfs(1);
if(d[1][1]==d[1][0])
printf("%d No\n",d[1][1]);
else if(d[1][1]>d[1][0])
printf("%d %s\n",d[1][1],f[1][1]?"No":"Yes");
else
printf("%d %s\n",d[1][0],f[1][0]?"No":"Yes");
mp.clear();
}
return 0;
}