Problem B: 机器人路径2

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:42 Solved:16

Description

           一个机器人位于一个 m x n 方格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图到达方格的右下角(在下图中标记为“Finish”)。

        给定一个 m x n 的两维整数数组 a 表示方格矩阵。每个方格要么是空格要么是墙,一个机器人初始位于左上角(即 a[0][0])。机器人尝试移动到 右下角(即 a[m - 1][n - 1])。不能出界不能撞墙。

        方格中的空格和墙分别用 0 和 1 来表示。机器人的移动路径不能出界不能撞墙。返回机器人能够到达右下角的不同路径的数量。输出结果对10^9+7 (1000000007) 取模。

        下面的图示对应样例数据,可见只有红色与蓝色标注的两条路径可以到达右下的目标位置。


Input

第一行两个整数 n,m。下面 n 行每行 m 个整数 a[i],[j]。其中数字 0表示空格,数字 1表示墙。


Output

输出一个整数为机器人到达右下角不同路径的数量。输出结果需要对10^9+7取模。


Sample Input Copy

3 5
0 0 0 0 1
0 1 0 0 0
0 0 0 1 0

Sample Output Copy

2

HINT

  1=<n,m<=1000。