1798. vector

给定一个初始长为 n 的数列 a,下标从 1 开始。共有 m 次操作,类型如下:

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

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

输入

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

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

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

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

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

输出

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

样例

标准输入 复制文本
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
提交 165
通过 59