#include #include #include using namespace std; const int MOD = 998244353; int main() { int H, W; cin >> H >> W; vector S(H); for (int i = 0; i < H; i++) { cin >> S[i]; } vector> dp(W, vector(H, 0)); dp[1][1] = 1; for (int i = 0; i < H; i++) { vector> dp_d(W, vector(H, 0)); for (int j = 0; j < W; j++) { for (int k = 0; k < H; k++) { int t = i + j - k; if (t < 0 || t >= W) continue; for (int d = 0; d < 4; d++) { int i_ = i, j_ = j, k_ = k, t_ = t; if (d % 2 == 0) t_++; else k_++; if (d / 2 == 0) i_++; else j_++; if (!(i_ < H && j_ < W && k_ < H && t_ < W)) continue; if (S[i_][j_] == '.' && S[k_][t_] == '.' && ((i_ != k_ || j_ != t_) || (i_ == j_ && i_ == H - 1 && k_ == t_ && k_ == W - 1))) { if (i == i_) { dp[j_][k_] = (dp[j_][k_] + dp[j][k]) % MOD; } else { dp_d[j_][k_] = (dp_d[j_][k_] + dp[j][k]) % MOD; } } } } } if (i != H - 1) dp = dp_d; } cout << dp[W - 1][H - 1] << endl; return 0; }