AT_aalc001_m NAND

Description

$ 0 $ 以上 $ 2^{30} $ 未満の整数 $ a,b $ に対して、 $ a $ と $ b $ の **NAND** を次のように定めます。 - $ a,b $ をそれぞれ、必要に応じて先頭に $ 0 $ を補って $ 2 $ 進法 $ 30 $ 桁で表します。各桁について、両方の数のその桁が $ 1 $ ならば $ 0 $ 、そうでなければ $ 1 $ とすると、 $ 2 $ 進法 $ 30 $ 桁で表された整数が得られます。それを $ a $ と $ b $ の NAND とします。 $ 0 $ 以上 $ 2^{30} $ 未満の整数からなる長さ $ N $ の数列 $ A=(A_1,A_2,\ldots,A_N) $ が与えられます。 クエリを $ Q $ 個処理してください。クエリは以下の $ 2 $ 種類のいずれかです。 - `1 p x`: $ A_p $ を $ 0 $ 以上 $ 2^{30} $ 未満の整数 $ x $ に変更する。 - `2 l r`: $ B_l=A_l $ とし、 $ i=l+1,l+2,\ldots,r $ の順に $ B_i $ を $ B_{i-1} $ と $ A_i $ の NAND として定める。 $ B_r $ を出力する。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ Q $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $ 各クエリは以下のいずれかの形式で与えられる。 > $ 1 $ $ p $ $ x $ > $ 2 $ $ l $ $ r $

Output Format

$ 2 $ 種類目のクエリの個数を $ q $ として、 $ q $ 行出力せよ。 $ j $ 行目には、 $ j $ 番目の $ 2 $ 種類目のクエリに対する答えを出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 番目のクエリでは、以下のように答えを計算できます。 1. $ B_1=A_1=5 $ です。 2. $ B_1 $ ( $ =5 $ ) と $ A_2 $ ( $ =3 $ ) の NAND は $ 1073741822 $ なので、 $ B_2=1073741822 $ です。 3. $ B_2 $ ( $ =1073741822 $ ) と $ A_3 $ ( $ =12 $ ) の NAND は $ 1073741811 $ なので、 $ B_3=1073741811 $ です。 4. $ B_3 $ ( $ =1073741811 $ ) と $ A_4 $ ( $ =10 $ ) の NAND は $ 1073741821 $ なので、 $ B_4=1073741821 $ です。この値を出力します。 ### Constraints - $ 1 \leq N \leq 2 \times 10^5 $ - $ 1 \leq Q \leq 2 \times 10^5 $ - $ 0 \leq A_i \lt 2^{30} $ - $ 1 $ 種類目のクエリについて、 $ 1 \leq p \leq N $ , $ 0 \leq x \lt 2^{30} $ - $ 2 $ 種類目のクエリについて、 $ 1 \leq l \leq r \leq N $ - 入力される数値はすべて整数