#P11008. [2016杭电多校]Differencia

[2016杭电多校]Differencia

Differencia

Problem Description

Professor Zhang has two sequences a1,a2,...,ana_1,a_2,...,a_n and b1,b2,...,bnb_1,b_2,...,b_n. He wants to perform two kinds of operations on the sequences:

    • ll rr xx: set aia_i to xx for all lirl \le i \le r.
  1. ? ll rr: find the number of ii such that aibia_i \ge b_i and lirl \le i \le r.

Input

There are multiple test cases. The first line of input contains an integer TT, indicating the number of test cases. For each test case: The first line contains four integers nn, mm, AA and BB $(1 \le n \le 10^5, 1 \le m \le 3000000, 1 \le A, B \le 2^{16})$ -- the length of the sequence, the number of operations and two parameters. The second line contains nn integers a1,a2,...,ana_1, a_2, ..., a_n (1ai109)(1 \le a_i \le 10^9). The third line contains nn integers b1,b2,...,bnb_1, b_2, ..., b_n (1bi109)(1 \le b_i \le 10^9). As there are too many operations, the mm operations are specified by parameters AA and BB given to the following generator routine. int a = A, b = B, C = ~(1<<31), M = (1<<16)-1; int rnd(int last) { a = (36969 + (last >> 3)) * (a & M) + (a >> 16); b = (18000 + (last >> 3)) * (b & M) + (b >> 16); return (C & ((a << 16) + b)) % 1000000000; } For the ii-th operation, first call rnd(last) three times to get ll, rr and xx (i.e. l = rnd(last) % n + 1, r = rnd(last) % n + 1, x = rnd(last) + 1). Then if l>rl > r, you should swap their value. And at last, the ii-th operation is type ?, if (l+r+x)(l+r+x) is an even number, or type + otherwise. Note: lastlast is the answer of the latest type ? operation and assume last=0last = 0 at the beginning of each test case.

Output

For each test case, output an integer $S=(\sum\limits_{i=1}^{m}{i \cdot z_i}) \text{ mod } (10^9 + 7)$, where ziz_i is the answer for ii-the query. If the ii-th query is of type +, then zi=0z_i=0.

Sample Input

3
5 10 1 2
5 4 3 2 1
1 2 3 4 5
5 10 3 4
5 4 4 2 1
1 2 3 4 5
5 10 5 6
5 4 5 2 1
1 2 2 4 5

Sample Output

81
88
87

Author

zimpha

Source

2016 Multi-University Training Contest 2