Halloween has finally arrived and the ghosts on your street have decided to volunteer at your local haunted houses. Each of the ghosts (numbered from to ) will volunteer at exactly one of the haunted houses and perform their prepared routine. The ghost will perform unique moves in their routine, with the moves each being one of types of moves:
- spook
- hide
- creep
- float
Each move has an associated scare factor, for .
In addition, the ghosts are separated into groups based on the sum of the digits of their number. All ghosts who have the same sum of digits are in the same group. In order to keep the group happy, at least half of the ghosts in that group must be assigned to the same haunted house.
On Halloween night, each ghost will arrive at their assigned haunted house in the order of their number. They will ask the other ghosts inside the house if any of them are currently planning on performing any of the same moves as them in their routine. To avoid their routines being too similar, all of these ghosts that are currently inside the house (but not outside) will agree to remove that move from their routine.
Once all the ghosts have arrived, the haunted house will open, and the ghosts will perform their routines. Each move a ghost performs contributes to the scariness of the haunted house. The scariness of a haunted house is the sum of the scare factors of all moves performed by any ghost inside the house.
You will be asked questions. For the question, you want to determine the number of ways to assign ghosts to the haunted houses such that each group is happy, and the sum of the scariness of the houses is between and (inclusive). Since this number can be very large, please output it modulo . It may be helpful to know that is prime and .
Constraints
for
for
for
Input Specification
The first line of input contains integers, .
The next lines of input describe the moves in the ghost's routine. Each line begins with an integer , the number of unique moves in the ghost's routine. The next words on the line are the moves the ghost will perform in their routine. Each word will be one of spook
, hide
, creep
, or float
. Each move will only appear once in a ghost's routine.
The next line of input contains integers, .
The next lines of input describe the questions. Each line contains integers, .
Output Specification
This problem is graded with an identical
checker. This includes whitespace characters. Ensure that every line of output is terminated with a \n
character and that there are no trailing spaces.
Output lines. On the line, output the number of ways, modulo , to assign ghosts to the haunted houses such that each group is happy, and the sum of the scariness of the houses is between and (inclusive). Two ways are considered different if there is at least one ghost that is assigned to a different house.
Sample Input
3 1
2 spook float
3 creep spook float
2 hide creep
10 5 7 8
19 41
Sample Output
40
Sample Explanation
There are ways to assign ghosts to houses such that the sum of the scare factors is , and ways such that the sum is .
Comments
What is "their number" here? Sum of digits of i?