蔡德仁和艾莉芬正在玩游戏。
她们有一个
积木有
可以用一个矩阵表示棋盘状态,
这是一个例子,是同一个局面分别做上下左右四个方向操作的结果:
020 002 || 020 321 || 020 200 || 020 000 ||
301 [→] 031 || 301 [↑] 012 || 301 [←] 310 || 301 [↓] 021 ||
012 012 || 012 000 || 012 120 || 012 312 ||
现在蔡德仁和艾莉芬开始了游戏。游戏规则如下:
首先艾莉芬在棋盘上放置一些积木,这时候所有积木都没有涂色。
然后蔡德仁可以对棋盘进行任意次操作,然后交给艾莉芬再进行任意次操作,之后棋盘会进行左、下两次操作把所有积木收拢到左下角。
然后艾莉芬可以对棋盘上的积木进行涂色。
然后蔡德仁可以对棋盘进行任意次操作,然后交给艾莉芬再进行任意次操作,之后棋盘会进行左、下两次操作把所有积木收拢到左下角。
现在已知全部操作完毕之后棋盘的最终状态。(以上的任意次操作都可以是
艾莉芬有些好奇,她想知道她有多少种放置积木和涂色的方案满足,无论蔡德仁如何操作,艾莉芬都有办法能达到这个最终状态。
两种方案不同,当且仅当艾莉芬放置积木后(第 1 步结束)的棋盘状态不同(这时只考虑积木所在的位置集合)或者涂色后(第 3 步结束)的棋盘状态不同。
她知道这个答案可能很大,所以她想请你算出答案对
输入格式
第一行两个正整数
接下来
输出格式
输出一行一个整数表示答案,即满足无论蔡德仁如何操作,艾莉芬都有办法能达到这个最终状态的初始棋盘种类数,答案对
样例
样例 1
input
3 2 1 2 0 1 2 0 1 1 0
output
3
explanation
三种可能的初始状态分别为:
1 2 0 1 2 0 1 1 0
0 1 2 0 1 2 0 1 1
1 0 2 1 0 2 1 0 1
样例 2~5
见下发文件中的 ex_board*.in/out
。
其中样例 2 满足子任务 2 的限制,样例 3 满足子任务 4 的限制,样例 4 满足子任务 5 的限制,样例 5 满足子任务 7 的限制。
数据范围与提示
对于所有数据,保证:
本题采用子任务捆绑测试。
子任务编号 | 分值 | 额外限制 | ||
---|---|---|---|---|
最终状态为严格阶梯(第 |
||||
最终状态为严格矩形(存在常数 |
||||
时间限制:
空间限制: