#include <bits/stdc++.h>
using namespace std;
constexpr unsigned int MOD = 1e9 + 7;
class HGrid1 {
public:
int totalPath(vector<vector<char>>& grid, int rows, int cols) {
vector<vector<int>> dp(rows, vector<int>(cols, 0));
dp[0][0] = 1;
for(int i = 1; i < cols; ++i) {
dp[0][i] = grid[0][i] == '#' ? 0 : dp[0][i-1];
}
for(int r = 1; r < rows; ++r) {
dp[r][0] = grid[r][0] == '#' ? 0 : dp[r-1][0];
for(int c = 1; c < cols; ++c) {
dp[r][c] = grid[r][c] == '#' ? 0 : (dp[r-1][c]+dp[r][c-1])%MOD;
}
}
return dp[rows-1][cols-1];
}
};
int main() {
int rows, cols;
cin >> rows >> cols;
vector<vector<char>> grid(rows, vector<char>(cols));
for(int r = 0; r < rows; ++r) {
for(int c = 0; c < cols; ++c) {
cin >> grid[r][c];
}
}
HGrid1 obj;
cout << obj.totalPath(grid, rows, cols) << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdGV4cHIgdW5zaWduZWQgaW50IE1PRCA9IDFlOSArIDc7CgoKY2xhc3MgSEdyaWQxIHsKICBwdWJsaWM6IAogICAgaW50IHRvdGFsUGF0aCh2ZWN0b3I8dmVjdG9yPGNoYXI+PiYgZ3JpZCwgaW50IHJvd3MsIGludCBjb2xzKSB7CiAgICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZHAocm93cywgdmVjdG9yPGludD4oY29scywgMCkpOwogICAgICAKICAgICAgZHBbMF1bMF0gPSAxOwogICAgICAKICAgICAgZm9yKGludCBpID0gMTsgaSA8IGNvbHM7ICsraSkgewogICAgICAgIGRwWzBdW2ldID0gZ3JpZFswXVtpXSA9PSAnIycgPyAwIDogZHBbMF1baS0xXTsKICAgICAgfQogICAgICAKICAgICAgCiAgICAgIGZvcihpbnQgciA9IDE7IHIgPCByb3dzOyArK3IpIHsKICAgICAgICBkcFtyXVswXSA9IGdyaWRbcl1bMF0gPT0gJyMnID8gMCA6IGRwW3ItMV1bMF07CiAgICAgICAgZm9yKGludCBjID0gMTsgYyA8IGNvbHM7ICsrYykgewogICAgICAgICAgZHBbcl1bY10gPSBncmlkW3JdW2NdID09ICcjJyA/IDAgOiAoZHBbci0xXVtjXStkcFtyXVtjLTFdKSVNT0Q7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gZHBbcm93cy0xXVtjb2xzLTFdOwogICAgfQp9OwoKCmludCBtYWluKCkgewogIGludCByb3dzLCBjb2xzOwogIGNpbiA+PiByb3dzID4+IGNvbHM7CiAgdmVjdG9yPHZlY3RvcjxjaGFyPj4gZ3JpZChyb3dzLCB2ZWN0b3I8Y2hhcj4oY29scykpOwogIGZvcihpbnQgciA9IDA7IHIgPCByb3dzOyArK3IpIHsKICAgIGZvcihpbnQgYyA9IDA7IGMgPCBjb2xzOyArK2MpIHsKICAgICAgY2luID4+IGdyaWRbcl1bY107CiAgICB9CiAgfQogIAogIEhHcmlkMSBvYmo7CiAgY291dCA8PCBvYmoudG90YWxQYXRoKGdyaWQsIHJvd3MsIGNvbHMpIDw8IGVuZGw7CiAgcmV0dXJuIDA7Cn0=
MjAgMjAKLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4KLi4uLi4uLi4uLi4uLi4uLi4uLi4K
20 20
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................