B'You are given two integer arrays of length N , A1 and A2 . You are also given Q queries of 4 types: 1 k l r x: set Ak_i:=min(Ak_i, x) for each l <= q i <= q r . 2 k l r x: set Ak_i:=max(Ak_i, x) for each l <= q i <= q r . 3 k l r x: set Ak_i:=Ak_i+x for each l <= q i <= q r . 4 l r: find the ( sum_{i=l}^r F(A1_i+A2_i)) % (10^9+7) where F(k) is the k -th Fibonacci number ( F(0)=0, F(1)=1, F(k)=F(k-1)+F(k-2) ), and x % y denotes the remainder of the division of x by y . You should process these queries and answer each query of the fourth type. The first line contains two integers N and Q . ( 1 <= q N, Q <= q 5 x 10^4 ) The second line contains N integers, array A1_1, A1_2, ... A1_N . ( 0 <= q A1_i <= q 10^6 ) The third line contains N integers, array A2_1, A2_2, ... A2_N . ( 0 <= q A2_i <= q 10^6 ) The next Q lines describe the queries. Each line contains 5 or 3 integers, where the first integer denotes the type of the query. ( k in {1, 2 } , 1 <= q l <= q r <= q N ) For queries of type 1 and 2, 0 <= q x <= q 10^9 holds. For queries of type 3, xe2 x88 x9210^6 <= q x <= q 10^6 holds. It is guaranteed that after every query each number in arrays A1 and A2 will be nonnegative. Print the answer to each query of the fourth type, in separate lines. In the first example: The answer for the first query is F(1 + 2) + F(0 + 1) + F(2 + 0) = F(3) + F(1) + F(2) = 2 + 1 + 1 = 4 . After the second query, the array A2 changes to [2, 4, 0] . After the third query, the array A1 changes to [0, 0, 0] . The answer for the fourth query is F(0 + 2) + F(0 + 4) + F(0 + 0) = F(2) + F(4) + F(0) = 1 + 3 + 0 = 4 . In the second example: The answer for the first query is F(1 + 4) + F(3 + 2) + F(5 + 1) = F(5) + F(5) + F(6) = 5 + 5 + 8 = 18 . The answer for the second q'... |