AT_ttpc2024_2_d Odd Xor
Description
長さ $ N $ の非負整数列 $ A,B $ があります。はじめ、 $ A=(A_1,A_2,\ldots,A_N),B=(B_1,B_2,\ldots,B_N) $ です。
$ Q $ 個のクエリが与えられるので、与えられた順に処理してください。
各クエリは次の $ 2 $ 種類のどちらかです。
- タイプ $ 1 $ : `1 i a b` の形式で与えられる。 $ A_i $ の値を $ a $ に、 $ B_i $ の値を $ b $ に変更する。
- タイプ $ 2 $ : `2 Y 0 0` の形式で与えられる。次の問題を解く。> 非負整数 $ S $ に対し、非負整数列 $ X = (X_0, X_1, \dots, X_N) $ を次の漸化式で定義します。
>
>
> - $ X_0 = S $
> - 各 $ 1 \le i \le N $ について、 $ X_i = \begin{cases} X_{i - 1} \oplus A_i & \text{if } X_{i - 1} \equiv 1 \pmod{2} \\ X_{i - 1} \oplus B_i & \text{if } X_{i - 1} \equiv 0 \pmod{2} \end{cases} $
>
> 適切に非負整数 $ S $ を設定したとき $ X_N=Y $ とすることができるか判定し、可能な場合は、 $ X_N=Y $ となるような $ S $ の最小値を出力してください。
> $ X_N=Y $ となるような $ S $ が存在しない場合は、`-1` を出力してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ Q $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ B_1 $ $ B_2 $ $ \ldots $ $ B_N $ $ \mathrm{query}_1 $ $ \vdots $ $ \mathrm{query}_Q $
ただし、 $ \mathrm{query}_i $ は $ i $ 番目のクエリであり、以下のいずれかの形式で与えられる。
> 1 $ i $ $ a $ $ b $
> 2 $ Y $ 0 0
Output Format
タイプ $ 2 $ のクエリの個数を $ q $ として、 $ q $ 行出力せよ。 $ i $ 行目には $ i $ 個目のタイプ $ 2 $ のクエリに対する答えを出力せよ。
Explanation/Hint
### 部分点
追加の制約 $ Q=1 $ を満たすデータセットに正解した場合は $ 30 $ 点が与えられる。
### Sample Explanation 1
$ A = (0),\ B = (1) $ であるので、 $ S $ が奇数なら $ X_N = S $ 、 $ S $ が偶数なら $ X_N = S \oplus 1 $ となります。
$ 1 $ 個目のクエリでは、 $ Y = 5 $ です。 $ S $ が $ 4 $ または $ 5 $ であれば $ X_N = 5 $ となるので、最小値の $ 4 $ を出力します。 $ 2 $ 個目のクエリでは、 $ Y = 6 $ です。 $ X_N = 6 $ となるような $ S $ は存在しないので、`-1` を出力します。 $ 3 $ 個目のクエリでは、 $ Y = 7 $ です。 $ S $ が $ 6 $ または $ 7 $ であれば $ X_N = 7 $ となるので、最小値の $ 6 $ を出力します。
### Constraints
- 入力はすべて整数
- $ 1 \le N \le 2 \times 10^5 $
- $ 1 \le Q \le 2 \times 10^5 $
- $ 0 \le A_i,B_i < 2^{60} \ (1 \le i \le N) $
- タイプ $ 1 $ のクエリにおいて、 $ 1 \le i \le N $ , $ 0 \le a ,b < 2^{60} $
- タイプ $ 2 $ のクエリにおいて、 $ 0 \le Y \lt 2^{60} $
- タイプ $ 2 $ のクエリが $ 1 $ つ以上存在する