A44 - Change and Reverse Editorial /

Time Limit: 1 sec / Memory Limit: 1024 MB

配点: 1000

問題文

長さ N の配列 A = [A_1, \ldots, A_N] があり、最初はすべての i について A_i = i となっています。あなたは配列に対して Q 回の操作を行います。j 回目の操作は文字列 Query_j で表されます。

  • 変更操作:Query_j = \ 1 x y のとき、A_x の値を y に変更する
  • 反転操作:Query_j = \ 2 のとき、配列 A を逆順にする
  • 取得操作:Query_j = \ 3 x のとき、A_x の値を答える

すべての取得操作に対して、正しく答えるプログラムを作成してください。

制約

  • 1 \leq N \leq 200000
  • 1 \leq Q \leq 200000
  • どのタイミングでも、配列 A の要素は 1 以上 10^9 以下の整数である

入力

入力は以下の形式で標準入力から与えられます。

N Q
Query_1
\vdots
Query_Q

出力

取得操作に対する答えを順番に出力してください。詳しくは入出力例をご覧ください。


入力例 1

5 4
1 4 8
3 2
2
3 2

出力例 1

2
8

配列 A[1, 2, 3, 4, 5] \rightarrow [1, 2, 3, 8, 5] \rightarrow [5, 8, 3, 2, 1] と変化します。