#include <stdio.h> char v[8][8]; int ci,cj,ct; int n,m,t; int dfs() { if(ci < 0 || cj < 0 || ci >= n || cj >= m) return 0; if(v[ci][cj] == 2) if(ct == t) return 1; else return 0; else if(v[ci][cj]) { ct++; v[ci][cj] = 0; ci++; if(dfs()) return 1; ci--; ci--; if(dfs()) return 1; ci++; cj++; if(dfs()) return 1; cj--; cj--; if(dfs()) return 1; cj++; v[ci][cj] = 1; ct--; } return 0; } int main() { char c; int i,j,d; while(scanf("%d%d%d",&n,&m,&t),n | m | t) { for(i = 0;i < n;i++) for(j = 0;j < m;j++) { scanf(" %c",&c); v[i][j] = 0; switch(c) { case 'S': ci = i; cj = j; case '.': v[i][j] = 1; break; case 'D': d = i + j; v[i][j] = 2; } } if((d = d - ci - cj) < 0) d = -d; if(d > t || (d + t) & 1) puts("NO"); else { ct = 0; puts(dfs()? "YES": "NO"); } } return 0; }