func_code_string: #include <bits/stdc++.h>   using namespace std;   namespace zzc {   const int maxn = 3005;   const long long mod = 1e9 + 7;   long long f[maxn][maxn], x1, x2, x3, x4;   bool mp[maxn][maxn];   char ch[maxn];   long long n, m;   void work() {     scanf( %lld%lld , &n, &m);     for (int i = 1; i <= n; i++) {       scanf( %s , ch + 1);       for (int j = 1; j <= m; j++) {         if (ch[j] ==  # ) mp[i][j] = true;       }     }     memset(f, 0, sizeof(f));     f[1][1] = 1;     for (int i = 2; i <= n; i++) {       for (int j = 1; j <= m; j++) {         if (mp[i][j]) continue;         f[i][j] = (f[i][j] + f[i - 1][j] + f[i][j - 1]) % mod;       }     }     x1 = f[n][m - 1];     x2 = f[n - 1][m];     memset(f, 0, sizeof(f));     f[1][1] = 1;     for (int i = 1; i <= n; i++) {       for (int j = 2; j <= m; j++) {         if (mp[i][j]) continue;         f[i][j] = (f[i][j] + f[i - 1][j] + f[i][j - 1]) % mod;       }     }     x3 = f[n][m - 1];     x4 = f[n - 1][m];     printf( %lld n , ((x1 * x4 % mod) - (x2 * x3 % mod) + mod) % mod);   }   }  // namespace zzc   int main() {     zzc::work();     return 0;   }   