浇花

浇花

【题目描述】

n 个非负整数排成一行,每个数值为 Ai,数的位置不可改变。需要让所有的数都恰好等于 h。可进行的操作是:对任意长度的区间[i,j]中的每个数都加1,i 和 j 也任选,但要求每个数只能作为一次区间的起点,也只能作为一次区间的终点。也即是说: 对任意的两个区 间[L1,R1] 和 [L2,R2], 要求:L1≠L2并且 R1 ≠ R2. 请问有多少种不同的方式,使所有的数都等于 h. 输出答案模 1000000007 (10^9+7)后的余数。 两种方式被认为不同,只要两种方式所实施的操作的区间集合中,有一个区间不同即可。

【输入格式】

第 1 行:2 个整数 n, h
接下来 n 行,每行 1 个整数,表示 Ai

【输出格式】

第 1 行:1 个整数,表示答案。

【样例输入1】

3 2
1 1 1

【样例输出1】

4

【样例输入2】

5 1
1 1 1 1 1

【样例输出 1】

1

【样例输入 3】

4 3
3 2 1 1

【样例输出 3】

0

【数据范围】

15%的数据, 1≤n, h≤100,0≤ai≤100
另外15%的数据, 1≤n, h≤30
100%的数据,1≤n, h≤2000 1≤Ai≤2000

【限制】

本题时间限制1s,空间限制128MB(128000KB)。
共20个测试点,每个5分,忽略多余空格和换行。