//这道题如果硬要说他是拓扑排序的话,我也无话可说;
//从拓扑排序的思想上来看,无非就是找入点为0点有几个,如果只有一个的话,输出YES;否则输出NO;
//关键是MAP 的运用。。。
#include<iostream>
#include<string.h>
#include<string>
#include<map>
using namespace std;
const int MAX=99999999;
int main()
{
int n;
while(scanf("%d",&n),n)
{
string a,b;
map<string,int>bb;
int i,j;
for(i=1;i<=n;i++)
{
cin>>a>>b;
bb[a]++;
bb[b]=MAX;
}
map<string,int>::iterator it;
int ans=0;
for(it=bb.begin();it!=bb.end();it++)
{
if((it->second)<MAX)
ans++;
}
if(ans==1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}