#459. 分组

分组

Description

苏半夏 的班级正在划分学习小组。

苏半夏 的班级有nn 位学生,第ii 位学生可以花sis_i 的时间完成一个课时。苏半夏 需要把学生们分入若干个学习小组,使得每个学生都在恰好一个学习小组中。

如果同一个小组中学生的学习进度相差过大,那么速度快的学生会产生一定的不满,同时会给速度慢的学生带来压力。因此一个组的不和谐度为这个小组成员间学习速度的极差,也就是小组中最大的 sis_i 与最小的 sis_i 的差。特别地,可能有学生独自一组学习,则这个小组的不和谐度为 00

苏半夏 想要知道,一共有多少种不同的分组方式,可以使得分组后所有组的不和谐度之和不超过 kk

因为答案可能很大,所以苏半夏 只要你求出方案数对109+710^9 + 7 取模的结果即可。

注: 苏半夏 认为两个分组方式不同,当且仅当存在一对学生,他们在一种分组方式中在同一组而在另一种方式中不在同一组。

Format

Input

第一行两个整数n,kn, k 表示人数和允许的不和谐程度之和最大值。

第二行nn 个空格隔开的整数sis_i,表示每个学生的学习速度。

Output

输出一行一个整数表示方案数对109+710^9 + 7 取模的结果。

Samples

4 5
1 3 5 7
9

Limitation

对于所有测试数据,$1 \leqslant n \leqslant 500,0 \leqslant k \leqslant 1000,0 \leqslant s_i \leqslant 500$。

子任务1(20 分): n10n \leqslant 10

子任务2(15 分): k2k \leqslant 2

子任务3(15 分): 不同的 sis_i 只有两种。

子任务4(20 分): i=1nsi1000 \sum\limits_{i=1}^{n} s_i \leqslant 1000

子任务5(30 分):无特殊限制。