#joi2010yof. [joi2010yo_f]方向音痴のトナカイ

[joi2010yo_f]方向音痴のトナカイ

问题

今年,圣诞老人从天空中突然降临到JOI镇。由于JOI镇的每个家庭都有孩子,所以这位圣诞老人必须在JOI镇的每个家庭中分发礼物。然而,今年带来的驯鹿有点迷路,不能离开建筑物以外的地方,并且方向感很差,因此为了给每个家庭送礼物,需要精心规划行进路线。

JOI镇被分为东、西、南、北四个区域,每个区域可以是房屋、教堂或空地。JOI镇只有一个教堂。按照以下规则,圣诞老人和驯鹿从教堂出发,在给每个家庭分发一次礼物后返回教堂:

  • 由于今年的驯鹿方向感很差,只能朝东、西、南、北四个方向直线飞行,并且无法在空中改变方向。
  • 圣诞老人可以自由通过还没有分发礼物的房屋上方。他可以降落在还没有分发礼物的房屋上。降落后,必须分发礼物,然后再朝东、西、南、北四个方向起飞。
  • 在JOI镇的家庭中,在圣诞之夜,家庭成员在圣诞老人到来之前不会点亮壁炉,圣诞老人起飞后才会点亮。点亮壁炉后会冒烟,所以无法通过已经分发礼物的房屋上方。
  • 可以自由通过教堂上方。但是,因为教堂正在举行礼拜,直到分发完所有礼物之前,不能降落到教堂。

给定镇子的结构作为输入,请编写一个程序来计算圣诞老人和驯鹿有多少种分发礼物的路线。


输入

输入共有 n+1n + 1 行。第一行包含两个整数 mm (1m101 \leqq m \leqq 10) 和 nn (1n101 \leqq n \leqq 10) ,用空格分隔开。接下来的 nn 行中,每行包含 mm 个由空格分隔的 001122 中的一个数字,表示各个区域的状态。如果区域 (i,j)(i, j) 是空地,则该行中第 jj 个值为 00;如果是房屋,则为 11;如果是教堂,则为 22。教堂数量为 11,房屋数量介于 112323 之间。在评分时提供的输入数据中,分发礼物的路线不会超过 2,000,0002,000,000 条。

输出

输出只包含一个整数,表示分发礼物的路线数量。


示例 1

3 2
1 0 1
1 0 2

输出示例 1

2

示例 2

3 3
1 1 1
1 0 1
1 1 2

输出示例 2

6

示例 2 中的 66 种分发礼物的路线(数字表示顺序)