#include <stdio.h> int n,m,t,ok; char a[11][11]; void dd(int t,int x,int y) { if((t==0)&&(a[x][y]=='D')) ok=1; if(t==0) return; if(ok==1) return; if((a[x-1][y]=='.')||((a[x-1][y]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x-1,y); a[x][y]='.'; } if((a[x+1][y]=='.')||((a[x+1][y]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x+1,y); a[x][y]='.'; } if((a[x][y-1]=='.')||((a[x][y-1]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x,y-1); a[x][y]='.'; } if((a[x][y+1]=='.')||((a[x][y+1]=='D')&&(t==1))) { a[x][y]='X'; dd(t-1,x,y+1); a[x][y]='.'; } } int run() { int i,j,x,y; char s[10]; for(i=0;i<=n+1;i++) for(j=0;j<=m+1;j++) a[i][j]='X'; for(i=1;i<=n;i++) { scanf("%s",s); for(j=1;j<=m;j++) { a[i][j]=s[j-1]; if(a[i][j]=='S') { x=i; y=j; } } } ok=0; dd(t,x,y); if(ok==1) printf("YES\n"); else printf("NO\n"); } int main() { scanf("%d%d%d",&n,&m,&t); while(n!=0) { run(); scanf("%d%d%d",&n,&m,&t); } return 0; } /************************************************************** Problem: 2228 User: admin Language: C++ Result: Accepted Time:9 ms Memory:1144 kb ****************************************************************/