PivotOJ

Sprinklers 2: Return of the Alfalfa

시간 제한: 2000ms메모리 제한: 512MB출처: USACO 2020 US Open Contest, PlatinumBOJ 18871

문제

Farmer John has a small field in the shape of an NN by NN grid (1N20001 \le N \le 2000) where the jj-th square from the left of the ii-th row from the top is denoted by (i,j)(i,j) for all 1i,jN1 \le i,j \le N. He is interested in planting sweet corn and alfalfa in his field. To do so, he needs to install some special sprinklers.

A sweet corn sprinkler in square (I,J)(I,J) will sprinkle all squares to the bottom-left: i.e. (i,j)(i,j) with IiI \le i and jJj \le J.

An alfalfa sprinkler in square (I,J)(I,J) will sprinkle all squares to the top-right: i.e. (i,j)(i,j) with iIi \le I and JjJ \le j.

A square sprinkled by one or multiple sweet corn sprinklers can grow sweet corn; a square sprinkled by one or multiple alfalfa sprinklers can grow alfalfa. But a square sprinkled by both types of sprinklers (or neither type) can grow nothing.

Help FJ determine the number of ways (modulo 109+710^9 + 7) to install sprinklers in his field, at most one per square, so that every square is fertile (i.e., sprinkled by exactly one type of sprinkler).

Some of the squares are already occupied by woolly cows; this doesn't prevent these squares from being fertile, but no sprinklers can be installed in such squares.

입력

The first line contains a single integer N.N.

For each 1iN,1\le i\le N, the i+1i+1-st line contains a string of length NN denoting the ii-th row of the grid. Each character of the string is one of 'W' (indicating a square occupied by a woolly cow), or '.' (unoccupied).

출력

Output the remainder when the number of ways to install sprinklers is divided by 109+7.10^9+7.

예제

예제 1

입력
2
..
..
출력
28

예제 2

입력
4
..W.
..WW
WW..
...W
출력
2304
코드를 제출하려면 로그인하세요.