/**************************************************************

此题要产生冠军的意思就是,最后只有一个人从来没输过。

如果两个人没输过,也算没产生冠军。

所以,我们只需要统计有几个人输过。

/************************************************************

代码思路:n场比赛,那么一共输入2*n个名字,未出现过的名字加入到二维数组name中,sum统计总人数,loser表示输的人数

首先用数组vis把所有人记录为胜者。一旦某个人输了,就把对应的vis[j]赋值为0(败者)。

/*****************************************************************

代码如下:

/*************

#include<stdio.h>
#include<string.h>
char name[1001][100];//选手的名字 
int main()
{
	char p[100];
	int vis[1001];
	int n,sum,loser;
	int flag;
	while(scanf("%d",&n),n>0)
	{
		for(int i=0;i<1001;i++)	
			vis[i]=1;    //假设所有人都是胜者 
		
		loser=0;         //失败者人数初始为0 
		sum=0;           //参赛人数初始为0 
		for(int i=0;i<n*2;i++)
		{
			scanf("%s",p);
			flag=0;
			for(int j=0;j<sum;j++)
			{
				if(strcmp(p,name[j])==0)
				{ 
					if(i%2&&vis[j]==1)//败方 
					{
						loser++;
						vis[j]=0;//败了标记为0 
					}
					flag=1;
				}
			}
			if(!flag)//新加入的一名比赛者
			{
				strcpy(name[sum],p);
				if(i%2)//败方(第偶数次输入的)(i是从0开始的) 
				{
					loser++;
					vis[sum]=0;
				}
				sum++;
			}
		}
		if(sum-loser==1)//只有一位冠军 
		{
			puts("Yes");
		 } 
		 else
		 {
		 	puts("No");
		 }
	}
	return 0;
}