https://vjudge.net/contest/280495#problem/F
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,i,j,k,ff,t,z,l,x1,y1,x,y,v[200100],f[200100],ans;
int find(int x)
{
if (f[x]==x) return x;
return f[x]=find(f[x]);
}
int main()
{
while (scanf("%d%d",&x,&y))
{
if (x==0&&y==0)
{
printf("Yes\n");
continue;
}
for (i=0; i<=100100; i++)
{
f[i]=i;
v[i]=0;
}
ff=0;
if (x==-1&&y==-1)
break;
while (1)
{
v[x]=1;
v[y]=1;
x1=find(x);
y1=find(y);
if (x1!=y1)
{
f[x1]=y1;
}
else
{
ff=1;
}
scanf("%d%d",&x,&y);
if (x==0&&y==0) break;
}
if (ff==1)
{
printf("No\n");
continue;
}
k=0;
for (i=0; i<=100100; i++)
if (v[i]==1&&f[i]==i) k++;
if (k==1) printf("Yes\n");
else printf("No\n");
}
}