MOD = 998244353 H, W, K = map(int, input().split()) grid = [] for _ in range(H): grid.append(input().strip()) # Convert grid to 1-based indices dp = [[0] * (W + 2) for _ in range(H + 2)] row_pre = [[0] * (W + 2) for _ in range(H + 2)] pre = [[0] * (W + 2) for _ in range(H + 2)] # Initialize dp[1][1] if grid[0][0] == '.': dp[1][1] = 1 else: print(0) exit() row_pre[1][1] = dp[1][1] pre[1][1] = dp[1][1] for i in range(1, H + 1): for j in range(1, W + 1): if i == 1 and j == 1: continue if grid[i-1][j-1] == '#': dp[i][j] = 0 row_pre[i][j] = row_pre[i][j-1] pre[i][j] = (pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1] + dp[i][j]) % MOD continue T = i + j - K sum_less = 0 if T > 1: x_max = min(i, T - 2) for x in range(1, x_max + 1): y_max = min(j, T - x - 1) if y_max < 1: continue sum_less += row_pre[x][y_max] if sum_less >= MOD: sum_less -= MOD elif sum_less < 0: sum_less += MOD sum_less %= MOD current = (pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1] + dp[i][j]) % MOD total = (current - sum_less) % MOD dp[i][j] = total row_pre[i][j] = (row_pre[i][j-1] + dp[i][j]) % MOD pre[i][j] = (pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1] + dp[i][j]) % MOD print(dp[H][W] % MOD)