atcoder#ABC183E. [ABC183E] Queen on Grid

[ABC183E] Queen on Grid

Score : 500500 points

Problem Statement

We have a grid with HH horizontal rows and WW vertical columns of squares. Square (i,j)(i,j), which is at the ii-th row from the top and jj-th column from the left, is wall if SijS_{ij} is # and road if SijS_{ij} is ..

There is a queen, the chess piece, at Square (1,1)(1, 1). In one move, it can move any number of squares to the right, downwards, or diagonally to the lower right to a road square without jumping over wall squares.

In how many ways can the queen travel from Square (1,1)(1, 1) to Square (H,W)(H, W)? Find the count modulo (109+7)(10^9+7).

Here, two ways to travel are considered different if and only if there exists ii such that the position of the queen after the ii-th move is different in those two ways.

Constraints

  • 2H,W20002 \leq H,W \leq 2000
  • SijS_{ij} is # or ..
  • S11S_{11} and SHWS_{HW} are ..

Input

Input is given from Standard Input in the following format:

HH WW

S11S1WS_{11}\ldots S_{1W}

\vdots

SH1SHWS_{H1}\ldots S_{HW}

Output

Print the number of ways, modulo (109+7)(10^9+7), in which the queen can travel from Square (1,1)(1, 1) to Square (H,W)(H, W).

3 3
...
.#.
...
10

There are 1010 ways to travel, as follows:

  • (1,1)(1,2)(1,3)(2,3)(3,3)(1,1)\to (1,2)\to (1,3)\to (2,3)\to (3,3)
  • (1,1)(1,2)(1,3)(3,3)(1,1)\to (1,2)\to (1,3)\to (3,3)
  • (1,1)(1,2)(2,3)(3,3)(1,1)\to (1,2)\to (2,3)\to (3,3)
  • (1,1)(1,3)(2,3)(3,3)(1,1)\to (1,3)\to (2,3)\to (3,3)
  • (1,1)(1,3)(3,3)(1,1)\to (1,3)\to (3,3)
  • (1,1)(2,1)(3,1)(3,2)(3,3)(1,1)\to (2,1)\to (3,1)\to (3,2)\to (3,3)
  • (1,1)(2,1)(3,1)(3,3)(1,1)\to (2,1)\to (3,1)\to (3,3)
  • (1,1)(2,1)(3,2)(3,3)(1,1)\to (2,1)\to (3,2)\to (3,3)
  • (1,1)(3,1)(3,2)(3,3)(1,1)\to (3,1)\to (3,2)\to (3,3)
  • (1,1)(3,1)(3,3)(1,1)\to (3,1)\to (3,3)
4 4
...#
....
..#.
....
84

From (1,1)(1,1), the queen can move to (1,2)(1,2), (1,3)(1,3), (2,1)(2,1), (2,2)(2,2), (3,1)(3,1), or (4,1)(4,1).

One possible path to (4,4)(4,4) is (1,1)(3,1)(3,2)(4,3)(4,4)(1,1)\to (3,1)\to (3,2)\to (4,3)\to (4,4).

8 10
..........
..........
..........
..........
..........
..........
..........
..........
13701937

Find the count modulo (109+7)(10^9+7).