#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
vector <int> e[30];
bool flag;
bool visit[30];
bool dfs( int x )//x=be;
{
visit[x] = 1;
if ( x == 12 )
{
flag = 1;
return 1 ;
}
for( auto &i : e[x])
{
if(!visit[i])
dfs(i);
}
}
int main()
{
string str;
while (cin>> str)
{
#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
vector <int> e[30];
bool flag;
bool visit[30];
bool dfs( int x )//x=be;
{
visit[x] = 1;
if ( x == 12 )
{
flag = 1;
return 1 ;
}
for( auto &i : e[x])
{
if(!visit[i])
dfs(i);
}
}
int main()
{
string str;
while (cin>> str)
{
while(str[0] != '0')
{
int len = str.length();
int be = str[0]-'a';
int en = str[len-1]-'a';
e[be].push_back(en);
cin>>str;
}
flag = 0;
dfs( 1 );
if(flag == 1)
printf("Yes.\n");
if( flag == 0)
printf("No.\n");
flag = 0;
memset(e,0,sizeof(e));
memset(visit,0,sizeof(visit));
}
return 0;
}
{
int len = str.length();
int be = str[0]-'a';
int en = str[len-1]-'a';
e[be].push_back(en);
cin>>str;
}
flag = 0;
dfs( 1 );
if(flag == 1)
printf("Yes.\n");
if( flag == 0)
printf("No.\n");
flag = 0;
memset(e,0,sizeof(e));
memset(visit,0,sizeof(visit));
}
return 0;
}