#include <stdlib.h>
#include <stdio.h>
 
char a[9][9];
int n,m,t,dx,dy,f;
int g[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};
void dfs(int x,int y,int p)
{
    int i,sx,sy,s;
    s=p-abs(x-dx)-abs(y-dy);
    if(x>n||y>m||x<=0||y<=0) return;
    if(p==0&&s==0) f=1;
    if(f) return;
    if(s<0||s&1) return;
    for(i=0; i<4; i++)
    {
        sx=x+g[i][0];
        sy=y+g[i][1];
        if(a[sx][sy]!='X')
        {
            a[sx][sy]='X';
            dfs(sx,sy,p-1);
            a[sx][sy]='.';
        }
    }
    return;
}
int main()
{
    int i,j,x,y,b;
    while(scanf("%d%d%d",&n,&m,&t)&&(n!=0||m!=0||t!=0))
    {
        getchar();
        b=0;
        for(i=1; i<=n; i++)
        {
            for(j=1; j<=m; j++)
            {
                scanf("%c",&a[i][j]);
                if(a[i][j]=='S')
                {
                    x=i;
                    y=j;
                }
                else if(a[i][j]=='D')
                {
                    dx=i;
                    dy=j;
                }
                else if(a[i][j]=='X') b++;
            }
            getchar();
        }
 
        if(n*m-b<=t)
        {
            printf("NO\n");
            continue;
        }
        f=0;
        a[x][y]='X';
        dfs(x,y,t);
        if(f) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}
 
/**************************************************************
    Problem: 1056
    User: admin
    Language: C
    Result: 正确
    Time:2 ms
    Memory:1064 kb
****************************************************************/
/**************************************************************
	Problem: 2228
	User: admin
	Language: C
	Result: Accepted
	Time:9 ms
	Memory:1144 kb
****************************************************************/