AT_past202212_o シフトとシフト
Description
長さ $ N $ の整数列 $ A = (A_1, A_2, \ldots, A_N) $ が与えられます。 $ A $ の各要素 $ A_1, A_2, \ldots, A_N $ はそれぞれ、(先頭に余計な `0` を含まない)十進数表記で $ D $ 桁の正の整数であり、どの桁も `0` ではありません。
$ Q $ 個のクエリが与えられます。各クエリは次に示すタイプ $ 1 $ 、タイプ $ 2 $ 、タイプ $ 3 $ のいずれかです。 与えられる $ Q $ 個のクエリを入力で与えられる順番にすべて処理してください。
【タイプ $ 1 $ 】
> $ 1 $ $ x $
数列 $ A $ を左に $ x $ 回だけ巡回シフトする。すなわち、 $ A = (a_1, a_2, \ldots, a_N) $ のとき、 これを $ A = (a_{x+1}, a_{x+2}, \ldots, a_N, a_1, a_2, \ldots, a_x) $ に変更する。
【タイプ $ 2 $ 】
> $ 2 $ $ l $ $ r $ $ y $
$ i = l, l+1, \ldots, r $ について下記を行う:
> $ A_i $ の十進数表記 $ d_1 d_2 \ldots d_D $ を左に $ y $ 回だけ巡回シフトして得られる整数 $ d_{y+1} d_{y+2} \ldots d_D d_1 d_2 \ldots d_y $ で、 $ A_i $ を置き換える。
【タイプ $ 3 $ 】
> $ 3 $ $ l $ $ r $
$ A_l \oplus A_{l+1} \oplus \cdots \oplus A_r $ を出力する。ここで、 $ \oplus $ はビットごとの排他的論理和を表す。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ D $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ Q $ $ query_1 $ $ query_2 $ $ \vdots $ $ query_Q $
ただし、 $ query_i $ は問題文中で示したタイプ $ 1 $ 、タイプ $ 2 $ 、タイプ $ 3 $ のいずれかの形式である。
Output Format
タイプ $ 3 $ のクエリそれぞれについて、入力で与えられた順に、答えを改行区切りで出力せよ。
Explanation/Hint
### Sample Explanation 1
はじめ、 $ A = (A_1, A_2, A_3, A_4, A_5) = (123, 234, 345, 456, 567) $ です。
- $ 1 $ 個目のクエリで $ A_2 \oplus A_3 \oplus A_4 = 234 \oplus 345 \oplus 456 = 123 $ を出力します。
- $ 2 $ 個目のクエリで $ A = (A_1, A_2, A_3, A_4, A_5) = (456, 567, 123, 234, 345) $ と変化します。
- $ 3 $ 個目のクエリで $ A_2 \oplus A_3 \oplus A_4 = 567 \oplus 123 \oplus 234 = 678 $ を出力します。
- $ 4 $ 個目のクエリで $ A = (A_1, A_2, A_3, A_4, A_5) = (456, 567, 312, 423, 534) $ と変化します。
- $ 5 $ 個目のクエリで $ A_2 \oplus A_3 \oplus A_4 = 567 \oplus 312 \oplus 423 = 680 $ を出力します。
### Constraints
- $ 2 \leq N \leq 10^5 $
- $ 1 \leq Q \leq 10^5 $
- $ 2 \leq D \leq 9 $
- $ 10^{D-1} \leq A_i < 10^D $
- $ A_i $ の十進数表記のどの桁も `0` でない。
- $ 1 \leq x \leq N-1 $
- $ 1 \leq y \leq D-1 $
- $ 1 \leq l \leq r \leq N $
- 与えられるクエリのうち少なくとも $ 1 $ つはタイプ $ 3 $ である。
- 入力はすべて整数