You are a student looking for a job. Today you had an employment examination for an IT company. They asked you to write an efficient program to perform several operations. First, they showed you an N×N square matrix and a list of operations. All operations but one modify the matrix, and the last operation outputs the character in a specified cell. Please remember that you need to output the final matrix after you finish all the operations.
Followings are the detail of the operations:
First line of each testcase contains nine integers. First two integers in the line, N and Q, indicate the size of matrix and the number of queries, respectively (1≤N,Q≤40,000). Next three integers, A B, and C, are coefficients to calculate values in initial matrix (1≤A,B,C≤1,000,000), and they are used as follows: A_r,c=(r\*A+c\*B)modC where r and c are row and column indices, respectively (1≤r,c≤N). Last four integers, D, E, F, and G, are coefficients to compute the final hash value mentioned in the next section (1≤D≤E≤N,1≤F≤G≤N,E−D≤1,000,G−F≤1,000). Each of next Q lines contains one operation in the format as described above.
Output a hash value h computed from the final matrix B by using following pseudo source code.
h <- 314159265
for r = D...E
for c = F...G
h <- (31 * h + B_{r,c}) mod 1,000,000,007
where "<-" is a destructive assignment operator, "for i = S...T" indicates a loop for i from S to T (both inclusive), and "mod" is a remainder operation.