#include<stdio.h> #include<string.h> int a[100000][2],vis[100000],i,count; int f(int p,int k) { int j,t; for(j=k+1;j-k<=i;j++) { if(j>i) t=j-i-1; else t=j; if(p==a[t][0] && !vis[a[t][1]]) { vis[a[t][1]]=1;count++; if(f(a[t][1],t)==0) return 0; } else if(p==a[t][1] && !vis[a[t][0]]) { vis[a[t][0]]=1;count++; if(f(a[t][0],t)==0) return 0; } else if((p==a[t][0] && vis[a[t][1]]) || (p==a[t][1] && vis[a[t][0]])) return 0; } return 1; } int main() { int k,z; while(scanf("%d%d",&a[0][0],&a[0][1])==2 && (a[0][0]!=-1 || a[0][1]!=-1)) { if(a[0][0]==0 && a[0][1]==0) { printf("Yes\n");continue; } z=0; if(a[0][0]==a[0][1]) z=1; for(i=1;;i++) { scanf("%d%d",&a[i][0],&a[i][1]); if(a[i][0]==0 && a[i][1]==0) break; if(a[i][0]==a[i][1]) z=1; } if(z) { printf("No\n");continue; } i--; if(i>=99999) { printf("No\n");continue; } memset(vis,0,sizeof(vis)); vis[a[0][0]]=1;vis[a[0][1]]=1; k=0;count=0; if(f(a[0][0],k) && f(a[0][1],k) && count==i) printf("Yes\n"); else printf("No\n"); } return 0; }