#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define all(x) x.begin(),x.end()
#define v(x) vector<x>
#define nl '\n'
ll mod = 1e9+7;
int h;
vector<vector<char>> grid(1001,vector<char> (1001));
vector<vector<ll>> dp(1001,vector<ll> (1001,-1));
ll CountWays(ll r , ll c)
{
// base
if(r > h-1 or c > h-1 or grid[r][c] == '*') return 0;
if(r == h-1 and c == h-1) return 1;
// dp
if(dp[r][c] != -1) return dp[r][c];
return dp[r][c] = (CountWays(r+1,c)%mod + CountWays(r,c+1)%mod)%mod;
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
cin >> h;
for (int i = 0; i < h; i++)
{
for (int j = 0; j < h; j++)
{
cin >> grid[i][j];
}
}
cout << CountWays(0,0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdXNpbmcgbGQgPSBsb25nIGRvdWJsZTsKCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgdih4KSB2ZWN0b3I8eD4KI2RlZmluZSBubCAnXG4nCmxsIG1vZCA9IDFlOSs3OwppbnQgaDsKdmVjdG9yPHZlY3RvcjxjaGFyPj4gZ3JpZCgxMDAxLHZlY3RvcjxjaGFyPiAoMTAwMSkpOwp2ZWN0b3I8dmVjdG9yPGxsPj4gZHAoMTAwMSx2ZWN0b3I8bGw+ICgxMDAxLC0xKSk7CgpsbCBDb3VudFdheXMobGwgciAsIGxsIGMpCnsKICAgIC8vIGJhc2UKICAgIGlmKHIgPiBoLTEgb3IgYyA+IGgtMSBvciBncmlkW3JdW2NdID09ICcqJykgcmV0dXJuIDA7CiAgICBpZihyID09IGgtMSBhbmQgYyA9PSBoLTEpIHJldHVybiAxOwoKICAgIC8vIGRwCiAgICBpZihkcFtyXVtjXSAhPSAtMSkgcmV0dXJuIGRwW3JdW2NdOwoKCiAgICByZXR1cm4gZHBbcl1bY10gPSAoQ291bnRXYXlzKHIrMSxjKSVtb2QgKyBDb3VudFdheXMocixjKzEpJW1vZCklbW9kOwp9CgoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShudWxscHRyKTsgY291dC50aWUobnVsbHB0cik7CiAgICBjaW4gPj4gaDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaDsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaDsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgY2luID4+IGdyaWRbaV1bal07CiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgCiAgICBjb3V0IDw8IENvdW50V2F5cygwLDApOwp9