\(A\) và một số nguyên dương \(k\).
có một dãy số nguyên dươngNhận thấy dãy \(A\) không mang tính nghệ thuật, muốn tách dãy \(A\) thành một vài dãy con liên tiếp thoả mãn điều kiện sau:
- Mỗi một phần tử \(A_i\) đều thuộc một và chỉ một dãy con.
- Các phần tử trong cùng một dãy con phải có cùng giá trị.
- Độ dài một dãy con không vượt quá \(k\).
Các bạn hãy đếm xem có bao nhiêu cách khác nhau để \(i\) và \(j\) khác nhau mà chúng ở chung một nhóm trong một cách, nhưng lại khác nhóm ở cách còn lại.
có thể chia dãy thoả mãn các điều kiện trên. Hai cách chia gọi là khác nhau nếu tồn tại hai phần tửInput
-
Dòng đầu tiên chứa số nguyên dương \(n\) là số phần tử của dãy \(A\).
-
\(n\) dòng tiếp theo, mỗi dòng chứa \(1\) số nguyên dương \(A_i\) biểu thị một phần tử của dãy \(A\) \((1 \leq a_i \leq n)\).
-
Dòng cuối cùng chứa số nguyên dương \(k\) là số phần tử tối đa trong một nhóm.
Output
- Hãy in ra số cách chia khác nhau thoả mãn điều kiện trên sau khi chia dư cho \(10^9+7\).
Scoring
-
Subtask \(1\) (\(60\%\) số điểm): \(1 \leq k \leq n \leq 300\).
-
Subtask \(2\) (\(15\%\) số điểm): \(1 \leq k \leq n \leq 5000\).
-
Subtask \(3\) (\(25\%\) số điểm): \(1 \leq k \leq n \leq 2*10^5\).
Example
Test 1
Input
4
1
2
3
1
1
Output
1
Note
Ở ví dụ 1, chỉ có một cách chia duy nhất là [1 | 2 | 3].
Test 2
Input
4
2
3
3
3
2
Output
3
Note
Ở ví dụ 2, các cách chia thoả mãn là [2 | 3 | 3 | 3] , [2 | 3 3 | 3], và [2 | 3 | 3 3].
Bình luận