Problem2387--暑假提高组模拟测试卷九 T2 田园生活

2387: 暑假提高组模拟测试卷九 T2 田园生活

Time Limit: 1.000 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Submit] [Status] [Web Board] [Creator:][下载测试数据]

Description

小 Z 最近爱上了田园生活,在后花园里开垦了一块田地,这块地可以看作是一个 n 行 n 列的方阵,从上到下第 i 行和从左到右第 j 列的格子可以记作 (i, j)。现在,他要在田地里面种植玉米和豌豆。因此,他需要安装一些特殊的洒水器。

在 (x,y) 中的玉米洒水器可以喷洒到所有左下方的格子,即满足 i\ge x 并且 j < y 的 (i,j)。

在 (x,y) 中的豌豆洒水器可以喷洒到所有右上方的格子,即满足 i< x 并且 j \ge y 的 (i,j)。

根据长期的种植经验,小 Z 知道,被一个或者多个玉米洒水器喷洒到的格子可以长出好吃的又甜又糯的玉米,被一个或多个豌豆洒水器喷洒到的格子可以长出颗粒饱满的豌豆。但是被两种洒水器同时喷扫到的格子什么也长不出来。

现在告诉你某些不能安装洒水器的方格,并且每个方格最多只能安装一个洒水器,小 Z 想要在田地里安装若干洒水器使得每一个方格均能长出来农作物(即只被一种洒水器喷洒到)。

注意,不能安装洒水器的格子以及安装了洒水器的格子,都不影响农作物的生长。

请你帮小 Z 求出在田地中安装洒水器的方案数,因为方案数很大,只要求输出方案数 \text{mod} 10^9+7 的值。



Input

输入的第一行包含一个整数 n。

第 i+1 行包含一个长为 n 的字符串,表示方阵的第 i 行。字符串中的每个字符为 W(表示不能安装洒水器的格子)或 .(表示各可以安装洒水器的格子)。



Output

输出安装洒水器的方案数 \bmod \ 10^9+7 的结果。

Sample Input

## 样例 #1

### 样例输入 #1

```
2
..
..
```

### 样例输出 #1

```
28
```

## 样例 #2

### 样例输入 #2

```
4
..W.
..WW
WW..
...W
```

### 样例输出 #2

```
2304
```

HINT

【样例 1 解释】

以下是所有十四种可以使得 (1,1) 生长玉米的方式。(以下用 C 表示玉米,P 表示豌豆)

CC  .C  CP  CC  .C  CP  CP  C.  CP  C.  CC  .C  CC  .C CC, CC, CC, .C, .C, .C, CP, CP, .P, .P, C., C., .., ..
【样例 2 提示】

这个样例满足第一个子任务的限制。

【数据范围】

对于 20% 的数据,满足 n < 10 且最多有 10 个不能安装洒水器的格子。

对于 40% 的数据,满足 n < 200。

对于 100% 的数据,满足 1 < n < 2000。



Source/Category

 

[Submit] [Status]