Limak is a little polar bear. His parents told him to clean a house before the New Year's Eve. Their house is a rectangular grid with *h* rows and *w* columns. Each cell is an empty square.

He is a little bear and thus he can't clean a house by himself. Instead, he is going to use a cleaning robot.

A cleaning robot has a built-in pattern of *n* moves, defined by a string of the length *n*. A single move (character) moves a robot to one of four adjacent cells. Each character is one of the following four: 'U' (up), 'D' (down), 'L' (left), 'R' (right). One move takes one minute.

A cleaning robot must be placed and started in some cell. Then it repeats its pattern of moves till it hits a wall (one of four borders of a house). After hitting a wall it can be placed and used again.

Limak isn't sure if placing a cleaning robot in one cell will be enough. Thus, he is going to start it *w*·*h* times, one time in each cell. Maybe some cells will be cleaned more than once but who cares?

Limak asks you one question. How much time will it take to clean a house? Find and print the number of minutes modulo 10<sup class="upper-index">9</sup> + 7. It's also possible that a cleaning robot will never stop — then print "-1" (without the quotes) instead.

Placing and starting a robot takes no time, however, you must count a move when robot hits a wall. Take a look into samples for further clarification.
The first line contains three integers *n*, *h* and *w* (1 ≤ *n*, *h*, *w* ≤ 500 000) — the length of the pattern, the number of rows and the number of columns, respectively.

The second line contains a string of length *n* — the pattern of *n* moves. Each character is one of uppercase letters 'U', 'D', 'L' or 'R'.
In the first sample house is a grid with 10 rows and 2 columns. Starting a robot anywhere in the second column will result in only one move (thus, one minute of cleaning) in which robot will hit a wall — he tried to go right but there is no third column. Starting a robot anywhere in the first column will result in two moves. The total number of minutes is 10·1 + 10·2 = 30.

In the second sample a started robot will try to move "RULRULRULR..." For example, for the leftmost cell in the second row robot will make 5 moves before it stops because of hitting an upper wall.
def start():
    n = input().split(' ')
    move = input()
    movwlen = int(n[0])
    width = int(n[2])
    height = int(n[1])
    coord = [0,0]
    time = 0

    for p in move:
        if p == "U":
            coord[1] += 1
        elif p == "D":
            coord[1] -= 1
        elif p == "L":
            coord[0] -= 1
        elif p == "R":
            coord[0] += 1
    if coord[0] == 0 and coord[1] == 0:
        return -1

    coord = [0,0]
    for i in range(0, height):
        for j in range(0, width):
            coord = [j,i]
            wall = True
            while wall:
                for z in move:
                    if z == "U":
                        coord[1] += 1
                        time += 1
                        if coord[1] == height or coord[1] < 0:
                            wall= False
                            break
                    elif z == "D":
                        coord[1] -= 1
                        time += 1
                        if coord[1] == height or coord[1] < 0:
                            wall= False
                            break
                    elif z == "L":
                        coord[0] -= 1
                        time += 1
                        if coord[0] == width or coord[0] < 0:
                            wall= False
                            break
                    elif z == "R":
                        coord[0] += 1
                        time += 1
                        if coord[0] == width or coord[0] < 0:
                            wall= False
                            break

    return time
print(start())