問題文

空の列 AA が与えられます。

QQ 個のクエリが与えられるので、順番に処理してください。
クエリは次の 33 種類のいずれかです。

  • 1 x : AA の最後尾に xx を追加する。
  • 2 : AA の最初の要素を出力する。その後、その要素を削除する。このクエリが与えられるとき、AA は空でないことが保証される。
  • 3 : AA を反転させる。

制約

  • 1Q1051 \leq Q \leq 10^5
  • 0x1090 \leq x \leq 10^9
  • クエリ 2 が与えられるとき、AA は空でない。
  • 入力はすべて整数である。

入力

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

Q
query1
query2
...
queryQ

i(1iQ)i \: (1 \leq i \leq Q) 番目の query ii では、まずクエリの種類 tit_i (1,2,3(1, 2, 3 のいずれか)) が与えられ、ti=1t_i = 1 のときは追加で xx が与えられる。
すなわち、各クエリは以下に示す 33 つの形式のいずれかが与えられる。

1 x
2
3

出力

ti=2t_i = 2 を満たすクエリの個数を qq として、qq 行出力せよ。
j(1jq)j \: (1 \leq j \leq q) 行目では jj 番目のそのようなクエリに対する答えを出力せよ。

入出力例

入力例1
10
1 1
1 2
1 3
1 4
1 5
2
1 8
3
2
2
出力例1
1
8
5

入力例 11 において、ii 番目のクエリを処理した後の AA の状態を ii 行目に示すと以下のようになります。

  • (1)(1)
  • (1,2)(1, 2)
  • (1,2,3)(1, 2, 3)
  • (1,2,3,4)(1, 2, 3, 4)
  • (1,2,3,4,5)(1, 2, 3, 4, 5)
  • (2,3,4,5)(2, 3, 4, 5)
  • (2,3,4,5,8)(2, 3, 4, 5, 8)
  • (8,5,4,3,2)(8, 5, 4, 3, 2)
  • (5,4,3,2)(5, 4, 3, 2)
  • (4,3,2)(4, 3, 2)
入力例2
14
1 294
2
1 109
1 162
2
2
1 667
2
1 416
1 135
1 192
3
2
2
出力例2
294
109
162
667
192
135

提出


Go (1.21)