#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> #include<queue> using namespace std; char str[100]; int mat[30][30]; int vis[30][30]; int ok; bool isok(int now,int next) { if(mat[now][next]==0||vis[now][next]==1) return false; return true; } void bfs() { int i,j,k; queue<int> q; q.push('b'-'a'); while(!q.empty()) { int now,next; now=q.front(); q.pop(); if(now=='m'-'a') { ok=1; return ; } for(i=0;i<26;i++) { next=i; if(isok(now,next)) { if(now=='m'-'a') { ok=1; return ; } vis[now][next]=1; q.push(next); } } } } int main() { int cnt; int n; int i,j,k; int f,t; while(scanf("%s",str)!=EOF) { if(strcmp(str,"0")==0) { printf("No. ");continue; } ok=0; memset(mat,0,sizeof(mat)); memset(vis,0,sizeof(vis)); f=str[0]-'a'; t=str[strlen(str)-1]-'a'; mat[f][t]=1; while(1) { scanf("%s",str); if(strcmp(str,"0")==0) break; f=str[0]-'a'; t=str[strlen(str)-1]-'a'; mat[f][t]=1; } bfs(); if(ok) printf("Yes. "); else printf("No. "); } return 0; }