Вам задано прямоугольное клетчатое поле, состоящее из *n* строк и *m* столбцов. Поле содержит цикл из символов «*», такой что:
 -  цикл можно обойти, посетив каждую его клетку ровно один раз, перемещаясь каждый раз вверх/вниз/вправо/влево на одну клетку; -  цикл не содержит самопересечений и самокасаний, то есть две клетки цикла соседствуют по стороне тогда и только тогда, когда они соседние при перемещении вдоль цикла (самокасание по углу тоже запрещено). 
Ниже изображены несколько примеров допустимых циклов:

Все клетки поля, отличные от цикла, содержат символ «.». Цикл на поле ровно один. Посещать клетки, отличные от цикла, Роботу нельзя.

В одной из клеток цикла находится Робот. Эта клетка помечена символом «S». Найдите последовательность команд для Робота, чтобы обойти цикл. Каждая из четырёх возможных команд кодируется буквой и обозначает перемещение Робота на одну клетку:
 -  «U» — сдвинуться на клетку вверх, -  «R» — сдвинуться на клетку вправо, -  «D» — сдвинуться на клетку вниз, -  «L» — сдвинуться на клетку влево. 
Робот должен обойти цикл, побывав в каждой его клетке ровно один раз (кроме стартовой точки — в ней он начинает и заканчивает свой путь).

Найдите искомую последовательность команд, допускается любое направление обхода цикла.
В первой строке входных данных записаны два целых числа *n* и *m* (3 ≤ *n*, *m* ≤ 100) — количество строк и столбцов прямоугольного клетчатого поля соответственно.

В следующих *n* строках записаны по *m* символов, каждый из которых — «.», «*» или «S». Гарантируется, что отличные от «.» символы образуют цикл без самопересечений и самокасаний. Также гарантируется, что на поле ровно одна клетка содержит «S» и что она принадлежит циклу. Робот не может посещать клетки, помеченные символом «.».
В первом тестовом примере для обхода по часовой стрелке последовательность посещенных роботом клеток выглядит следующим образом:
 1.  клетка (3, 2); 1.  клетка (3, 1); 1.  клетка (2, 1); 1.  клетка (1, 1); 1.  клетка (1, 2); 1.  клетка (1, 3); 1.  клетка (2, 3); 1.  клетка (3, 3); 1.  клетка (3, 2).
3 3
***
*.*
*S*
LUURRDDL
6 7
.***...
.*.*...
.*.S**.
.*...**
.*....*
.******
UULLDDDDDRRRRRUULULL
100 3
***
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
S.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
*.*
***
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUURRDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLLUUUUUUUUUUUUUUUUUU
3 100
****************************************************************************************************
*..................................................................................................*
**********************************************************************************S*****************
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLUURRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRDDLLLLLLLLLLLLLLLLL

def getVertexByIndex(i):
    if(i==0):
        return "L"
    if(i==1):
        return "R"
    if(i==2):
        return "U"
    if(i==3):
        return "D"


def getDeltaX(i):
    if(i=="L"):
        return int(-1)
    if(i=="R"):
        return int(1)
    else:
        return int(0)



def getDeltaY(i):
    if(i=="U"):
        return int(-1)
    if(i=="D"):
        return int(1)
    else:
        return int(0)


def getInvert(i):
    if(i=="U"):
        return "D"
    if(i=="D"):
        return "U"
    if(i=="L"):
        return "R"
    if(i=="R"):
        return "L"
    else:
        return " "

def getWay(x,y,old,MAP):
    dx=[-1,1,0,0]
    dy=[0,0,-1,1]
    #лево право вверх вниз

    for i in range(4):
        if 0<=int(y+dy[i])<len(MAP) and 0<=int(x+dx[i])<len(MAP[0])and  (MAP[y+dy[i]][x+dx[i]]=="*") and getVertexByIndex(i)!=getInvert(old):
            return getVertexByIndex(i)
    return "S"


def searchStart(x,y,MAP):
    dx=[-1,1,0,0]
    dy=[0,0,-1,1]
    #лево право вверх вниз

    for i in range(4):
        if 0<=int(y+dy[i])<len(MAP) and 0<=int(x+dx[i])<len(MAP[0])and  (MAP[y+dy[i]][x+dx[i]]=="S"):
            return getVertexByIndex(i)

inStr = input()
n,m=inStr.split()
#n строк по m символов в каждой
mymap=[]
startX=0
startY=0

thisX=0
thisY=0

way = ""

for i in range(int(n)):
    inStr = input()

    if(inStr.find('S')!=-1):
        startX=inStr.find('S')
        startY=i
        
    
    mymap+=[inStr]




thisX=startX
thisY=startY

#print(startX,startY)

way+=getWay(startX,startY," ",mymap)

thisX+=getDeltaX(way[len(way)-1])
thisY+=getDeltaY(way[len(way)-1])

while (startX!=thisX) or (startY!=thisY):
    way+=getWay(thisX,thisY,way[len(way)-1],mymap)
    if(way[len(way)-1]=="S"):
        way=way[0:-1]
        way+=searchStart(thisX,thisY,mymap);
        break;
    thisX+=getDeltaX(way[len(way)-1])
    thisY+=getDeltaY(way[len(way)-1])
    #print(way)
print(way)



