#include<stdio.h>
char a[10][10];
int v[10][10];
int dirx[4]={1,0,-1,0};
int diry[4]={0,1,0,-1};
int flag=0;
struct point{
int x;
int y;
int step;
int pre;//用于赋值前一个位置的下标
}path[100];
struct queue{
int front;
int rear;
}r;//申请队列
int main(){
//得出一个地图
int i,j;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
v[i][j]=0;
scanf("%c",&a[i][j]);
if(a[i][j]=='\n')
j=j-1;
}
}
//BFS
struct point start;
start.x=0; start.y=0; start.step=0; start.pre=0;
r.front=0; r.rear=0;
path[r.rear]=start;
r.rear++;
v[start.x][start.y]=1;
while(r.front!=r.rear){
int x=path[r.front].x;
int y=path[r.front].y;
if(x==9&&y==9){
flag=1;
break;
}
int m;
struct point temp;//设置一个暂时的储存区
for(m=0;m<4;m++){
int tx=x+dirx[m]; int ty=y+diry[m];
if(a[tx][ty]=='.'&&v[tx][ty]==0){
temp.x=tx; temp.y=ty;
temp.step=path[r.front].step+1;
temp.pre=r.front;//赋值前一步的下标
path[r.rear++]=temp;
v[tx][ty]=1;
}
}
r.front++;//要出队队首
}
if(flag==1)printf("Yes\n");
else printf("No\n");
return 0;
}