- Time limit: 1.00 s
- Memory limit: 512 MB
Your company has coders, and each of them has a skill level between and . 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 ?
Input
The first input line has two integers and : the number of coders and the maximum allowed penalty sum.
The next line has integers : the skill level of each coder.
Output
Print one integer: the number of valid divisions modulo .
Constraints
Example
Input:
3 2 2 5 3
Output:
3