#include<iostream>
#include<cstdio>
using namespace std;
int A[100001]={0};
int find(int x)寻找根节点,右边的为根节点
{
int r=x;
while(r!=A[r])
r=A[r];
return r;
}
void merge(int a,int b)合并没有相同根节点的集合
{
int fa=find(a);
int fb=find(b);
A[fb]=fa;
}
int main()
{
int a,b,i,sum;
while(1)输入多组数据
{int num=0;
while(~scanf("%d%d",&a,&b)&&(a||b))
{
if(a==-1 && b==-1) return 0;
if(A[a]==0)A[a]=a;
if(A[b]==0)A[b]=b;
if(find(a)==find(b))num=1;判断有没有成环
else
merge(a,b);
}
for(sum=0, i=1;i<=100000;i++)
{
if(A[i]==i)sum++;
A[i]=0;
}
if(sum>1||num==1)
printf("No\n");
else
printf("Yes\n");
}
}