【模板】双端队列
题号:NC306683
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个空数组,小红会进行共 q 次如下四种操作:
\hspace{23pt} \bullet1\ x:在数组的最前方插入一个元素 x
\hspace{23pt} \bullet2\ x:在数组的最后方插入一个元素 x
\hspace{23pt} \bullet3:弹出数组的第一个元素,并将其输出。
\hspace{23pt} \bullet4:弹出数组的最后一个元素,并将其输出。
\hspace{15pt}请你帮小红完成这 q 次操作。

输入描述:

\hspace{15pt}第一行输入一个整数 q\left(2 \leqq q \leqq 2 \times 10^5 \right)
\hspace{15pt}之后的 q 行,每行输入一个操作。保证 1 \leqq x \leqq 10^9,进行操作 3,4 时数组中至少有一个元素。
\hspace{15pt}特殊的,保证至少会有一次操作 3 或操作 4

输出描述:

\hspace{15pt}对于每次操作 3 和操作 4,新起一行,输出一个元素。
示例1

输入

复制
5
1 1
2 2
1 3
3
4

输出

复制
3
2