Just Another Game of Stones

아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

Kotori and Umi are playing games of stones, which is hosted by Honoka. The rule is the same as the classic one: There are some piles of stones and the players take turns to remove any positive number of stones from one pile. The one who can't make a legal move loses the game.

This time however, things will be a little different. As the host, Honoka will prepare the games from nn candidate piles of stones, where the ii-th pile initially has a_ia\_i stones. Honoka will perform qq operations of the following two types:

  1. Given three integers ll, rr and xx, for all lirl \le i \le r change the number of stones in the ii-th candidate pile to max(b_i,x)\max(b\_i, x), where b_ib\_i is the current number of stones in the ii-th candidate pile.
  2. Given three integers ll, rr and xx, start a game of stones consisting of (rl+2)(r-l+2) piles where the ii-th pile contains b_l1+ib\_{l-1+i} stones for all 1i<(rl+2)1 \le i < (r-l+2), and the (rl+2)(r-l+2)-th pile contains xx stones. Note that this operation is only querying for answer and will not affect the state of the nn candidate piles of stones.

Kotori is always the first to move. As a big fan of Kotori, you would like to know, for each game of stones, the number of ways Kotori can play in the first step to ensure her victory if both players use the best strategy. We consider two ways different if Kotori is taking stones from different piles, or from the same pile but is taking different number of stones.

입력

There is only one test case in each test file.

The first line of the input contains two integers nn and qq (1n,q2×1051 \le n, q \le 2 \times 10^5) indicating the number of candidate piles and the number of operations.

The second line contains nn integers a_1,a_2,,a_na\_1, a\_2, \cdots, a\_n (0a_i23010 \le a\_i \le 2^{30}-1) where a_ia\_i indicates the initial number of stones in the ii-th pile.

For the following qq lines, the ii-th line contains four integers op_iop\_i, l_il\_i, r_ir\_i and x_ix\_i (op_i1,2op\_i \in \\{1, 2\\}, 1l_ir_in1 \le l\_i \le r\_i \le n, 0x_i23010 \le x\_i \le 2^{30}-1) indicating the ii-th operation, where op_iop\_i is the type of operation and the others are the parameters of the operation. Operations are given in the order they're performed.

출력

For each operation of the second type output one line containing one integer indicating the answer.

힌트

For the first operation the players will play a game of stones consisting of 11, 22, 11 and 11 stone(s) in each pile respectively. The only winning play for Kotori is reduce the pile with 22 stones to 11 stone.

After the second operation, number of stones in the candidate piles changes to 11, 33, 33, 44 and 11 respectively.

For the fourth operation the players will play a game of stones consisting of 11, 33, 33, 44 and 44 stone(s) in each pile respectively. The winning plays for Kotori is to reduce the pile with 11 stone to 00 stone, or to reduce any pile with 33 stones to 22 stones.