Chia nhóm

Xem dạng PDF

Gửi bài giải

Điểm: 0,01 (OI)
Giới hạn thời gian: 0.5s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Có ~n~ học sinh trong một lớp đang làm việc theo nhóm. Các học sinh sẽ chia thành các nhóm (một số học sinh có thể làm việc một mình) để làm việc và sau đó cùng nhau thảo luận kết quả. Học sinh thứ ~i~ mất ~a_i~ phút để hoàn thành phần việc của mình.

Nếu học sinh làm việc với tốc độ khác nhau, điều đó có thể gây khó chịu cho các học sinh giỏi và áp lực cho các bạn học sinh kém hơn. Độ lệch của một nhóm được định nghĩa là giá trị lớn nhất ~a_i~ trong nhóm trừ đi giá trị nhỏ nhất ~a_i~ trong nhóm. Lưu ý rằng nhóm chỉ có một học sinh sẽ có độ lệch bằng ~0~. Hỏi có bao nhiêu cách để chia các học sinh thành các nhóm sao cho tổng độ lệch của tất cả các nhóm không vượt quá ~k~?

Hai cách chia được coi là khác nhau nếu tồn tại một cặp học sinh cùng nhóm trong một cách chia và khác nhóm trong cách chia còn lại.

Input

Dòng đầu tiên chứa hai số nguyên cách nhau bởi dấu cách ~n~ và ~k~ (~1 \le n \le 200~, ~0 \le k \le 1000~) — số lượng học sinh và tổng độ lệch tối đa cho phép.

Dòng thứ hai chứa ~n~ số nguyên ~a_i~ (~1 \le a_i \le 500~) — thời gian học sinh thứ ~i~ cần để hoàn thành phần việc của mình.

Output

In ra một số nguyên — số cách để chia nhóm các học sinh. Vì kết quả có thể rất lớn, hãy in ra kết quả modulo ~10^9 + 7~.

Sample Input 1

3 2
2 4 5

Sample Output 1

3

Sample Input 2

4 3
7 8 9 10

Sample Output 2

13

Sample Input 3

4 0
5 10 20 21

Sample Output 3

1

Notes

Trong ví dụ đầu tiên, ta có ba cách chia:

  • Học sinh thứ nhất và thứ hai tạo thành một nhóm, học sinh thứ ba tạo thành một nhóm riêng. Tổng độ lệch là ~2 + 0 = 2~.

  • Học sinh thứ nhất tạo thành một nhóm, học sinh thứ hai và thứ ba tạo thành một nhóm. Tổng độ lệch là ~0 + 1 = 1~.

  • Cả ba học sinh đều làm việc một mình. Tổng độ lệch là ~0~.

Trong ví dụ thứ ba, tổng độ lệch phải bằng ~0~, vì vậy mỗi học sinh phải làm việc một mình.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.