小马尔科厌倦了玩 Shiba Inu 或 XRC 之类的垃圾加密货币,于是他决定玩磁铁。他有 $n$ 个不同的磁铁,以及一个有 $l$ 个空槽的板子,磁铁可以放置在这些槽中。每对相邻槽之间的距离正好是一厘米。每个磁铁都有一个作用半径 $r_i$。这意味着它会吸引所有距离它严格小于 $r_i$ 厘米的磁铁(无论另一个磁铁的作用半径是多少)。有些磁铁的作用半径可能相同,但它们被视为不同的磁铁。
马尔科不喜欢磁铁之间相互吸引,所以他想知道有多少种放置磁铁的方法,使得没有任何磁铁吸引其他磁铁。所有的磁铁都必须放置在板子上,且每个空槽最多只能放置一个磁铁。如果两种放置方式中至少有一个磁铁的位置不同,则这两种方式被视为不同。由于所需的数量可能非常大,请输出其对 $10^9 + 7$ 取模的结果。
输入格式
第一行包含正整数 $n$ 和 $l$,分别表示磁铁的数量和空槽的数量。 第二行包含 $n$ 个正整数 $r_i$ ($1 \le r_i \le l$),表示 $n$ 个磁铁的作用半径。
输出格式
输出将磁铁放置在板子上且没有任何磁铁相互吸引的方法数,对 $10^9 + 7$ 取模。
子任务
在每个子任务中,均满足 $1 \le n \le 50$ 且 $n \le l \le 10\,000$。
| 子任务 | 分值 | 约束条件 |
|---|---|---|
| 1 | 10 | $r_1 = r_2 = \dots = r_n$ |
| 2 | 20 | $1 \le n \le 10$ |
| 3 | 30 | $1 \le n \le 30, n \le l \le 300$ |
| 4 | 50 | 无附加约束 |
样例
输入格式 1
1 10 10
输出格式 1
10
输入格式 2
4 4 1 1 1 1
输出格式 2
24
说明
所有磁铁的排列方式都是有效的,因为没有任何两个磁铁会相互吸引。
输入格式 3
3 4 1 2 1
输出格式 3
4
说明
如果我们用 1、2 和 3 表示磁铁,用 _ 表示空槽,则可能的磁铁排列方式为 13_2, 31_2, 2_13 和 2_31。