#CSES1665. 编程公司

编程公司

题目背景

翻译自 CSES-1665 题。

题目描述

你的公司有 nn 名程序员,每个程序员的技能等级在 00 到 100100 之间。你的任务是将这些程序员分成若干个团队,使得他们能够顺利地一起工作。

根据你的经验,当程序员的技能水平相差不大时,团队工作会更加顺利。因此,创建一个团队的惩罚是团队中最强和最弱程序员的技能等级差。

你需要计算有多少种方法可以将这些程序员分成若干个团队,使得所有团队的惩罚之和不超过 xx。

输入格式

第一行包含两个整数 nn 和 xx,分别表示程序员的数量和最大允许的惩罚总和。

第二行包含 nn 个整数 t1,t2,…,tnt_1, t_2, \dots, t_n,表示每个程序员的技能等级。

输出格式

输出一个整数,表示有效的分组方式数目,结果对 109+710^9 + 7 取模。

样例

3 2
2 5 3
3

说明/提示

1≤n≤1001 \leq n \leq 100;

0≤x≤50000 \leq x \leq 5000;

0≤ti≤1000 \leq t_i \leq 100。