CSES - Coding Company
  • Time limit: 1.00 s
  • Memory limit: 512 MB

Your company has nn coders, and each of them has a skill level between 00 and 100100. Your task is to divide the coders into teams that work together.

Based on your experience, you know that teams work well when the skill levels of the coders are about the same. For this reason, the penalty for creating a team is the skill level difference between the best and the worst coder.

In how many ways can you divide the coders into teams such that the sum of the penalties is at most xx?

Input

The first input line has two integers nn and xx: the number of coders and the maximum allowed penalty sum.

The next line has nn integers t1,t2,,tnt_1,t_2,\dots,t_n: the skill level of each coder.

Output

Print one integer: the number of valid divisions modulo 109+710^9+7.

Constraints

  • 1n1001 \le n \le 100
  • 0x50000 \le x \le 5000
  • 0ti1000 \le t_i \le 100

Example

Input:

3 2
2 5 3

Output:

3