编程题
### 问题描述
给定一个长度为 $n$ 数组 $a$,进行以下操作 $m$ 次:
* `1 x` 在数组末端添加一个数 $x$。
* `2 k` 按从后向前的顺序输出数组末端的 $k$ 个数,$k$ 不会超过数组当前长度,并移除它们。
* `3 k x` 将数组末端的 $k$ 个数替换为 $max(x,a_i)$
### 输入格式
输入第一行为两个整数 $n,m$,表示数组大小和操作次数。
接下来一行,为 $n$ 个整数,表示数组 $a$。
再接下来 $m$ 行,每行两到三个整数,含义见问题描述。
### 输出格式
输入若干行,每行b为每次操作 $2$ 弹出的 $k$ 个元素。
### 样例输入
```text
5 4
1 2 3 2 1
1 2
3 4 2
2 4
2 2
```
### 样例输出
```text
2 2 2 3
2 1
```
### 评测数据规模
对于 $50$% 的评测数据,$1\leq n,m \leq 50$。
对于 $100$% 的评测数据,$1\leq n,m,k \leq 10^5,-10^9\leq a_i,x \leq 10^9$。