1798. vector

给定一个初始长为 nn 的数列 aa,下标从 11 开始。共有 mm 次操作,类型如下:

  1. 在下标 ii 处插入元素 xx,原下标 ii 及往后的元素往后移动让位。
  2. 删除下标 ii 的元素,ii 往后的元素往前移动补位。
  3. 修改下标 ii 的元素值,将其改成 xx
  4. 查询并输出下标 ii 的元素。

对于任意时刻,如果此时下标 ii 大于数列长度,忽略此次操作。

输入

输入一行两个整数 n,m(1n,m105)n,m(1\le n,m\le10^5)

接下来输入一行 nn 个整数,代表初始 ai(1ai109)a_i(1\le a_i\le10^9)

接下来输入 mm 行,每行第一个整数为 c(1c4)c(1\le c\le4),代表操作类型:

  1. c=1c=1c=3c=3,接下来再输入两个整数 i,xi,x
  2. c=2c=2c=4c=4,接下来再输入一个整数 ii

保证 1i2×105,1x1091\le i\le2\times10^5,1\le x\le10^9。保证插入和删除操作总和不超过 100100 次。

输出

对每个不被忽略的操作 44,输出一行一个整数,代表查询值。

样例

标准输入 复制文本
3 12
10 20 30
1 4 114514
1 1 40
4 5
4 1
4 2
2 5
2 2
4 2
4 3
3 4 1919810
3 1 50
4 1
标准输出 复制文本
40
10
20
30
50
登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 167
通过 61