#DD260927C. 双L图标

双L图标

题目描述

聪明兔想给她和大笨龙合作建造的森林实验室设计一枚双 L 图标。她准备了一张 n×mn \times m 的背景网格,每个位置上是字符 . 或 #。

她要在背景上放置两个 L 形,每个 L 形由一条竖直线段和一条水平线段组成,满足以下条件:

  • 竖直线段的下端点与水平线段的左端点重合,称为拐点。两条线段都沿网格方向延伸,长度以相邻网格位置之间的距离为单位,均为正整数。因此,每条臂至少包含拐点之外的一个位置。
  • L 形经过的所有网格位置都必须是 .。
  • 两个 L 形不能有公共位置。
  • 背景和 L 形都不能翻转。

两个 L 形不区分先后顺序。请你计算不同设计方案的数量,答案对 109+710^9+7 取模。

输入格式

从标准输入读入数据。

第一行包含两个整数 n,mn,m。

接下来 nn 行,每行 mm 个字符,字符只有 . 或 #。

输出格式

输出到标准输出。

输出一个整数,表示设计方案数对 109+710^9+7 取模后的结果。

2 4
....
....
1
4 5
.##..
...#.
.#.#.
#...#
3
4 4
..#.
#.#.
....
..#.
4

数据范围

每个测试点 1010 分。各测试点的规模限制如下。

测试点编号 n,mn,m 的上限
1—2 2020
3—4 4040
5—6 100100
7—8 500500
9—10 30003000