def space_input(p=''):
    s=raw_input(p).split()
    for i in range(len(s)):
        s[i]=eval(s[i])
    return tuple(s)
class Mymap:
    def __init__(self,h,w):
        self.sx=self.sy=0
        self.height=h
        self.width=w
        self.allmoves=set()
        self.maze=[[' ' for i in range(w)] for i in range(h)]
    def getmap(self):
        for i in range(self.height):
            line=raw_input()
            for j in range(self.width):
                self.maze[i][j]=line[j]
                if line[j]=='S':
                    self.sx,self.sy=i,j
    def move(self,maze,sx,sy,moves=0):
        if maze[sx][sy]=='D':
            self.allmoves.add(moves)
        else:
            new=eval(repr(maze))
            new[sx][sy]='X'
            for i,j in [(sx-1,sy),(sx+1,sy),(sx,sy-1),(sx,sy+1)]:
                if 0<=i<self.height and 0<=j<self.width and new[i][j]!='X':
                    self.move(new,i,j,moves+1)
h,w,t=space_input()
while h or w or t:
    a=Mymap(h,w)
    a.getmap()
    a.move(a.maze,a.sx,a.sy)
    if t in a.allmoves:
        print 'YES'
    else:
        print 'NO'
    h,w,t=space_input()
/**************************************************************
	Problem: 2228
	User: admin
	Language: Python
	Result: Wrong Answer
****************************************************************/