题目描述
牛牛家的密码锁,输入密码的位置是N行M列的,每个位置都是一个不同字母、
数字或符号的按钮。
牛牛发现,每次点击一个按钮,都会发出声音。可以通过辨识前后两个声音的间
隔,来判断前后两个按钮的最大距离。
牛牛把听到的声音间隔分析了一下,计算出了每个位置离前一个按钮的最大距离。
距离是指曼哈顿距离,即上下左右相邻的按钮距离为1。当然,有时候输入密码
的人会停顿非常久,所以让牛牛计算出来的距离非常大,甚至比最远的两个按钮
还大,但这只是可能的最大距离,计算时应该予以考虑。
已知密码长度为t,牛牛不知道密码输入的起始位置,但牛牛想知道通过这样的
计算,有多少种可能的密码,结果对109+7取模。
输入格式
第一行输入三个整数N,M,t,表示密码锁的按钮行列数,和密码长度。
第二行输入t−1个整数,第i个整数 ai表示按下的第i+1个位置和第i个位置的距
离。
对于 20%的数据有n=1或m=1。
另有 20%的数据有1≤ n,m≤ 3。
对于 60%的数据有1≤ n,m≤ 10。
对于 100%的数据有1≤ n,m≤ 25,2≤ t≤ 1000,0≤ ai≤ 109。
输出格式
一行输出一个整数,即密码可能的数量。
样例
输入样例1
1 3 2
1
输出样例1
7
输入样例2
4 4 10
2 0 0 0 1 0 3 1 3
输出样例2
363792
提示
样例 1说明
开始位置可能是 (1,1),(1,2),(1,3)。
如果第一个按钮和第二个按钮距离为 0,则密码为
(1,1)−>(1,1),(1,2)−>(1,2),(1,3)−>(1,3),有三种不同的密码。
如果第一个按钮和第二个按钮距离为 1,则密码为
(1,1)−>(1,2),(1,2)−>(1,1),(1,2)−>(1,3),(1,3)−>(1,2),有四种不同的密码。
共计有 7种不同的密码。
样例 2说明
该样例为大样例。