#include<stdio.h> #include<stdlib.h> #include<string.h> char map[10][10]; int right; int n,m,t,di,dj; int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; void dfs(int si,int sj,int time) { int i,temp; if(si>n||sj>=m||si<=0||sj<0) return; if(si==di&&sj==dj&&time==t) { right=1; return; } temp=(t-time)-abs(si-di)-abs(sj-dj); if(temp<0||temp&1) return; for(i=0;i<4;i++) { if(map[si+move[i][0]][sj+move[i][1]]!='X') { map[si+move[i][0]][sj+move[i][1]]='X'; dfs(si+move[i][0],sj+move[i][1],time+1); if(right) return; map[si+move[i][0]][sj+move[i][1]]='.'; } } return; } int main() { int i,j,si,sj,wall; while(~scanf("%d%d%d",&n,&m,&t)&&n+m+t) { wall=0; for(i=1;i<=n;i++) { scanf("%s",map[i]); for(j=0;j<m;j++) { if(map[i][j]=='S') { si=i; sj=j; } else if(map[i][j]=='D') { di=i; dj=j; } else if(map[i][j]=='X') wall++; } } if(n*m-wall<=t) { printf("NO\n"); continue; } right=0; map[si][sj]='X'; dfs(si,sj,0); if(right) printf("YES\n"); else printf("NO\n"); } return 0; }