There are multiple test cases. The first line of input contains an integer $T$, indicating the number of test cases. For each test case:
The first line contains four integers $n$, $m$, $A$ and $B$ $(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 $n$ integers $a_1, a_2, ..., a_n$ $(1 \le a_i \le 10^9)$. The third line contains $n$ integers $b_1, b_2, ..., b_n$ $(1 \le b_i \le 10^9)$.
As there are too many operations, the $m$ operations are specified by parameters $A$ and $B$ 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 $i$-th operation, first call rnd(last) three times to get $l$, $r$ and $x$ (i.e. l = rnd(last) % n + 1, r = rnd(last) % n + 1, x = rnd(last) + 1). Then if $l > r$, you should swap their value. And at last, the $i$-th operation is type ?, if $(l+r+x)$ is an even number, or type + otherwise.
Note: $last$ is the answer of the latest type ? operation and assume $last = 0$ at the beginning of each test case.