AT_abc261_e [ABC261E] Many Operations
Description
[problemUrl]: https://atcoder.jp/contests/abc261/tasks/abc261_e
変数 $ X $ と、$ X $ の値を変更する $ N $ 種類の操作があります。操作 $ i $ は整数の組 $ (T_i,A_i) $ で表され、意味は次の通りです。
- $ T_i=1 $ のとき、$ X $ の値を $ X\ {\rm\ and}\ A_i $ に置き換える。
- $ T_i=2 $ のとき、$ X $ の値を $ X\ {\rm\ or}\ A_i $ に置き換える。
- $ T_i=3 $ のとき、$ X $ の値を $ X\ {\rm\ xor}\ A_i $ に置き換える。
変数 $ X $ を値 $ C $ で初期化した状態から、以下の処理を順に実行してください。
- 操作 $ 1 $ を行い、操作後の $ X $ の値を出力する。
- 続けて、操作 $ 1,2 $ を順に行い、操作後の $ X $ の値を出力する。
- 続けて、操作 $ 1,2,3 $ を順に行い、操作後の $ X $ の値を出力する。
- $ \vdots $
- 続けて、操作 $ 1,2,\ldots,N $ を順に行い、操作後の $ X $ の値を出力する。
$ {\rm\ and},\ {\rm\ or},\ {\rm\ xor} $ とは 非負整数 $ A,\ B $ の $ {\rm\ and},\ {\rm\ or},\ {\rm\ xor} $ は、以下のように定義されます。 - $ A\ {\rm\ and}\ B $ を二進表記した際の $ 2^k $ ($ k\ \geq\ 0 $) の位の数は、$ A,\ B $ を二進表記した際の $ 2^k $ の位の数のうち両方が $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。
- $ A\ {\rm\ or}\ B $ を二進表記した際の $ 2^k $ ($ k\ \geq\ 0 $) の位の数は、$ A,\ B $ を二進表記した際の $ 2^k $ の位の数のうち少なくとも一方が $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。
- $ A\ {\rm\ xor}\ B $ を二進表記した際の $ 2^k $ ($ k\ \geq\ 0 $) の位の数は、$ A,\ B $ を二進表記した際の $ 2^k $ の位の数のうちちょうど一方が $ 1 $ であれば $ 1 $、そうでなければ $ 0 $ である。
例えば、$ 3\ {\rm\ and}\ 5\ =\ 1 $、 $ 3\ {\rm\ or}\ 5\ =\ 7 $、 $ 3\ {\rm\ xor}\ 5\ =\ 6 $ となります。
Input Format
N/A
Output Format
N/A
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 2\times\ 10^5 $
- $ 1\leq\ T_i\ \leq\ 3 $
- $ 0\leq\ A_i\ \lt\ 2^{30} $
- $ 0\leq\ C\ \lt\ 2^{30} $
- 入力に含まれる値は全て整数である
### Sample Explanation 1
最初、$ X $ の値は $ 10 $ です。 - 操作 $ 1 $ を行うと $ X $ の値は $ 9 $ になります。 - 続けて操作 $ 1 $ を行うと $ X $ の値は $ 10 $ になり、さらに操作 $ 2 $ を行うと $ 15 $ になります。 - 続けて操作 $ 1 $ を行うと $ X $ の値は $ 12 $ になり、さらに操作 $ 2 $ を行うと $ 13 $ に、さらに続けて操作 $ 3 $ を行うと $ 12 $ になります。