#Educational DP Contest

#H-Grid1





h,w = list(map(int,input().split()))

maze = [list(list(eval(input()))) for i in range(h)]

mod = 10**9+7





#dp table

#座標をそのままdpテーブルとして見立てることができる。

#要素はその場所まで行ける手順の数

dp = [[0]*w for _ in range(h)]

dp[0][0] = 1



#process1

#移動は→↓の２通りのみなので、その方向に探索していけば良い。

for i in range(h):

    for j in range(w):

        if maze[i][j] == "#":

            continue

        if i > 0: #i-1を参照するため端っこは除く

            dp[i][j] += dp[i-1][j]

        if j > 0:

            dp[i][j] += dp[i][j-1]

        dp[i][j] %= mod





#output process

print((dp[-1][-1]))
import sys

readline = sys.stdin.buffer.readline

def even(n): return 1 if n%2==0 else 0



h,w = list(map(int,readline().split()))

maze = []

for _ in range(h):

	maze.append(readline().rstrip().decode('utf-8'))



dp = [[0]*w for _ in range(h)]

dp[0][0] = 1

for i in range(h):

	for j in range(w):

		if maze[i][j] == "#":

			continue

		if i > 0:

			dp[i][j] += dp[i-1][j]

		if j > 0:

			dp[i][j] += dp[i][j-1]

		dp[i][j]%=10**9+7



print((dp[-1][-1]))
# Educational DP Contest
# H-Grid1
h, w = list(map(int, input().split()))
maze = [list(list(eval(input()))) for i in range(h)]
mod = 10**9 + 7
# dp table
# 座標をそのままdpテーブルとして見立てることができる。
# 要素はその場所まで行ける手順の数
dp = [[0] * w for _ in range(h)]
dp[0][0] = 1
# process1
# 移動は→↓の２通りのみなので、その方向に探索していけば良い。
for i in range(h):
    for j in range(w):
        if maze[i][j] == "#":
            continue
        if i > 0:  # i-1を参照するため端っこは除く
            dp[i][j] += dp[i - 1][j]
        if j > 0:
            dp[i][j] += dp[i][j - 1]
        dp[i][j] %= mod
# output process
print((dp[-1][-1]))

import sys

readline = sys.stdin.buffer.readline


def even(n):
    return 1 if n % 2 == 0 else 0


h, w = list(map(int, readline().split()))
maze = []
for _ in range(h):
    maze.append(readline().rstrip().decode("utf-8"))
dp = [[0] * w for _ in range(h)]
dp[0][0] = 1
for i in range(h):
    for j in range(w):
        if maze[i][j] == "#":
            continue
        if i > 0:
            dp[i][j] += dp[i - 1][j]
        if j > 0:
            dp[i][j] += dp[i][j - 1]
        dp[i][j] %= 10**9 + 7
print((dp[-1][-1]))

-# Educational DP Contest -# H-Grid1 -h, w = list(map(int, input().split())) -maze = [list(list(eval(input()))) for i in range(h)] -mod = 10**9 + 7 -# dp table -# 座標をそのままdpテーブルとして見立てることができる。 -# 要素はその場所まで行ける手順の数 +import sys + +readline = sys.stdin.buffer.readline + + +def even(n): +    return 1 if n % 2 == 0 else 0 + + +h, w = list(map(int, readline().split())) +maze = [] +for _ in range(h): +    maze.append(readline().rstrip().decode("utf-8")) -# process1 -# 移動は→↓の２通りのみなので、その方向に探索していけば良い。 -        if i > 0:  # i-1を参照するため端っこは除く +        if i > 0: -        dp[i][j] %= mod -# output process +        dp[i][j] %= 10**9 + 7