You are given a length- bitstring (). In one operation, you can reverse a range if the following conditions are true:
The size of the range is even.
The first half of the range consists of one character (either or ), and the second half contains the opposite character
Either or
Either or
Find the minimum number of operations to move all of the s to the front, or report that it is impossible. If it is possible to do so, also output the number of sequences of operations achieving this minimum, modulo .
输入格式
The first line contains (), the number of independent tests. Each test is specified in the following format:
The bitstring is given in a compressed format. The first line contains , the number of runs in the string (), and the first character of the string (either or ).
The next line contains space-separated integers (), the lengths of maximal consecutive blocks of equal characters in . It’s guaranteed that .
Additionally, it is guaranteed that the sum of over all tests does not exceed .
输出格式
For each test case, print the minimum number of operations to move all of the s to the front or if it is impossible, as well as the number of sequences of operations achieving this minimum modulo .