#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define nmax 1003
const ll mod = 1e9 + 7;
char a[nmax][nmax];
ll dp[nmax][nmax];
ll n ,m;
int go(int x , int y){
if (y > m or x > n or a[x][y] == '#'){
return 0;
}
if (x == n and y == m){
return 1;
}
if (dp[x][y] != -1){
return dp[x][y];
}
return dp[x][y] = (go(x + 1 , y) + go(x , y + 1)) % mod;
}
void solve(){
memset(dp, -1 , sizeof(dp));
cin >> n >> m;
for (int i = 1 ; i <= n ; i++){
for (int j = 1 ; j <= m ; j++){
cin >> a[i][j];
}
}
cout << go(1 , 1);
}
int main(){
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBubWF4IDEwMDMKY29uc3QgbGwgbW9kID0gMWU5ICsgNzsKY2hhciBhW25tYXhdW25tYXhdOwpsbCBkcFtubWF4XVtubWF4XTsKbGwgbiAsbTsKaW50IGdvKGludCB4ICwgaW50IHkpewogICAgaWYgKHkgPiBtIG9yIHggPiBuIG9yIGFbeF1beV0gPT0gJyMnKXsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGlmICh4ID09IG4gYW5kIHkgPT0gbSl7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBpZiAoZHBbeF1beV0gIT0gLTEpewogICAgICAgIHJldHVybiBkcFt4XVt5XTsKICAgIH0KICAgIHJldHVybiBkcFt4XVt5XSA9IChnbyh4ICArIDEgLCB5KSArIGdvKHggLCB5ICsgMSkpICUgbW9kOwp9CnZvaWQgc29sdmUoKXsKICAgIG1lbXNldChkcCwgLTEgLCBzaXplb2YoZHApKTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKyl7CiAgICAgICAgZm9yIChpbnQgaiA9IDEgOyBqIDw9IG0gOyBqKyspewogICAgICAgICAgICBjaW4gPj4gYVtpXVtqXTsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGdvKDEgLCAxKTsKfQppbnQgbWFpbigpewogICAgc29sdmUoKTsKfQo=