問題文

NN 個の積み木が縦に積まれている。下から数えてi(1iN)i(1 \leq i \leq N)番目の積み木には数字aia_iが書かれている。この積み木に対して、次の4種類のクエリから構成される QQ 個のクエリを処理せよ。

  • クエリ11 : 一番上の積み木の上に新しく数字 kk と書かれた積み木を乗せる。
  • クエリ22 : 下から pp 番目の積み木に書かれた数字を出力する。
  • クエリ33 : 一番上の積み木を取り除き、その数字を出力する。
  • クエリ44 : 積み木を上下逆さまにする。つまり、下から数えてi(1iK)i(1 \leq i \leq K)番目の積み木は上から数えてii番目の位置に移動する。

制約

  • 1N1051 \leq N \leq 10^5
  • 1Q1051 \leq Q \leq 10^5
  • 1ai,k1091 \leq a_i,k \leq 10^9
  • クエリ33を行う時点での積み木の個数は11個以上であることが保証される。
  • クエリ2,32,311回以上与えられることが保証される。

入力

入力はすべて整数である。

N Q
a_1 a_2 ... a_N
Query_1
Query_2
...
Query_N

各クエリは以下のように与えられる。<br> クエリ11

1 K

クエリ22

2 p

クエリ33

3

クエリ44

4

出力

クエリ2,32,3の出力を各クエリごとに1行づつ出力せよ。

サンプル

入力1
2 2
1 3
4
2 1
出力1
3

クエリ44によって積み木が上下逆さまになっています。

入力2
5 4
1 2 3 4 5
1 6
4
2 3
3
出力2
4
1

提出


Go (1.21)