Given an array of length and a number , we need to process queries of the following types:
: Change the value of the number at position to
: Find how many arrays exist which can be formed with the numbers from positions to , such that the value of each of the numbers is at least and the sum of the values is equal to , if the only operation we can make is to increase values of the numbers from the array. Since the number of arrays can be really big, print the answer mod
Input
The first line will contain three integers, , and , which represent the length of the array, the number of queries we need to process and the minimal threshold for the value of each number with respect to the second type of query.
The second line of the input will contain the initial array .
The next lines of the input will contain the description of the queries.
Output
The output will contain a line for each query of type , with the answer for each query of type .
Constraints
- For tests worth points,
- For tests worth additional points, ,
Example
stdin
4 5 2
0 0 0 3
2 1 4 10
1 1 2
2 2 3 3
1 2 4
2 1 2 6
stdout
4
0
1
Explanation
For the first query, the arrays we can get are [, , , ], [, , , ], [, , , ], [, , , ].