#include <iostream>
#include <cstring>
using namespace std;
char a[10][10];
int step;
int b[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int flag;
int n,m,t;
int g,l,ex,ey;
void dfs(int x,int y,int step)
{
if(flag)
return ;
if(step==t&&x==ex&&y==ey)
{
flag=1;
return ;
}
if((t-step-abs(ex-x)-abs(ey-y))<0||(t-step-abs(ex-x)-abs(ey-y))&1)
{
return ;
}
for(int i=0;i<4;i++)
{
int c,r;
r=x+b[i][0];
c=y+b[i][1];
if(a[r][c]!='X'&&r>=1&&r<=n&&c>=1&&c<=m)
{
char temp=a[x][y];
a[x][y]='X';
dfs(r,c,step+1);
if(flag)
return ;
a[x][y]=temp;
}
}
return ;
}
int main()
{
while(cin>>n>>m>>t&&n&&m&&t)
{
step=0;
flag=0;
int w=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]=='S')
{
g=i;
l=j;
a[i][j]='X';
}
if(a[i][j]=='D')
{
ex=i;
ey=j;
}
if(a[i][j]=='X')
w++;
}
dfs(g,l,0);
if(t>n*m-w)
{
cout<<"NO"<<endl;
continue;
}
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}