#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 1e3 + 5;
const int MOD = 1e9 + 7;
void add(int& a, int b) {
a += b;
if (a >= MOD) a -= MOD;
}
int n;
string grid[N];
bool inside(int x, int y) {
return (1 <= x && x <= n && 1 <= y && y <= n);
}
int dp[N][N]; // dp[x][y] = Số cách đi từ ô (1, 1) đến ô (x, y)
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int x = 1; x <= n; x++) {
cin >> grid[x];
grid[x] = ' ' + grid[x];
}
for (int x = 1; x <= n; x++) {
for (int y = 1; y <= n; y++) {
int& cur = dp[x][y];
if (grid[x][y] == '*') {
cur = 0;
continue;
}
if (x == 1 && y == 1) {
cur = 1;
continue;
}
cur = 0;
if (inside(x - 1, y)) {
add(cur, dp[x - 1][y]);
}
if (inside(x, y - 1)) {
add(cur, dp[x][y - 1]);
}
}
}
cout << dp[n][n] << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAxZTMgKyA1OyAgCmNvbnN0IGludCBNT0QgPSAxZTkgKyA3OyAgCgp2b2lkIGFkZChpbnQmIGEsIGludCBiKSB7CglhICs9IGI7IAoJaWYgKGEgPj0gTU9EKSBhIC09IE1PRDsgCn0KCmludCBuOyAgCnN0cmluZyBncmlkW05dOyAgCgpib29sIGluc2lkZShpbnQgeCwgaW50IHkpIHsKCXJldHVybiAoMSA8PSB4ICYmIHggPD0gbiAmJiAxIDw9IHkgJiYgeSA8PSBuKTsgIAp9CgppbnQgZHBbTl1bTl07IC8vIGRwW3hdW3ldID0gU+G7kSBjw6FjaCDEkWkgdOG7qyDDtCAoMSwgMSkgxJHhur9uIMO0ICh4LCB5KQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgIAkKCWNpbiA+PiBuOyAgIAoKCWZvciAoaW50IHggPSAxOyB4IDw9IG47IHgrKykgewoJCWNpbiA+PiBncmlkW3hdOyAgCgkJZ3JpZFt4XSA9ICcgJyArIGdyaWRbeF07IAoJfQoKCWZvciAoaW50IHggPSAxOyB4IDw9IG47IHgrKykgewoJCWZvciAoaW50IHkgPSAxOyB5IDw9IG47IHkrKykgewoJCQlpbnQmIGN1ciA9IGRwW3hdW3ldOyAKCQkJaWYgKGdyaWRbeF1beV0gPT0gJyonKSB7CgkJCQljdXIgPSAwOyAKCQkJCWNvbnRpbnVlOyAKCQkJfQoJCQlpZiAoeCA9PSAxICYmIHkgPT0gMSkgewoJCQkJY3VyID0gMTsKCQkJCWNvbnRpbnVlOyAKCQkJfQoJCQljdXIgPSAwOwoJCQlpZiAoaW5zaWRlKHggLSAxLCB5KSkgewoJCQkJYWRkKGN1ciwgZHBbeCAtIDFdW3ldKTsgCgkJCX0KCQkJaWYgKGluc2lkZSh4LCB5IC0gMSkpIHsKCQkJCWFkZChjdXIsIGRwW3hdW3kgLSAxXSk7IAoJCQl9CgkJfQoJfQoKCWNvdXQgPDwgZHBbbl1bbl0gPDwgJ1xuJzsgCn0=