#P1108. 备份与恢复

备份与恢复

题目背景

某数据中心有两组存储阵列:工作阵列 WW备份阵列 BB,每组各有 nn 个存储单元。

系统管理员会定期将 WW 中的部分数据备份BB 中。WW 是只读的(初始给定后不会再变化),而 BB 会不断被备份数据覆盖。

题目描述

给定长度为 nn 的数组 WW(只读),以及一个初始全为 00 的数组 BB,支持两种操作:

  1. 1 x k y:将 W[x..x+k1]W[x..x+k-1](共 kk 个元素)复制到 B[y..y+k1]B[y..y+k-1]。即对每个 0d<k0 \le d < kB[y+d]:=W[x+d]B[y+d] := W[x+d]
  2. 2 p:查询 B[p]B[p] 的值。

输入格式

第一行两个整数 n,mn, m

第二行 nn 个整数 W1,W2,,WnW_1, W_2, \dots, W_n

接下来 mm 行,每行一个操作。

输出格式

对于每个查询操作,输出一行一个整数。

样例

样例输入

6 6
3 1 4 1 5 9
1 2 2 3
2 4
1 1 3 2
2 2
1 3 2 5
2 6

样例输出

4
3
1

样例解释

初始 W=[3,1,4,1,5,9]W = [3,1,4,1,5,9]B=[0,0,0,0,0,0]B = [0,0,0,0,0,0]

  1. 1 2 2 3W[2..3]=[1,4]W[2..3] = [1,4] 复制到 B[3..4]B[3..4]B=[0,0,1,4,0,0]B = [0,0,1,4,0,0]
  2. 2 4B[4]=4B[4] = 4,输出 44
  3. 1 1 3 2W[1..3]=[3,1,4]W[1..3] = [3,1,4] 复制到 B[2..4]B[2..4]B=[0,3,1,4,0,0]B = [0,3,1,4,0,0]
  4. 2 2B[2]=3B[2] = 3,输出 33
  5. 1 3 2 5W[3..4]=[4,1]W[3..4] = [4,1] 复制到 B[5..6]B[5..6]B=[0,3,1,4,4,1]B = [0,3,1,4,4,1]
  6. 2 6B[6]=1B[6] = 1,输出 11

数据范围

测试点 nn mm
181 \sim 8 n100n \le 100 m100m \le 100
9189 \sim 18 n105n \le 10^5 m105m \le 10^5
192019 \sim 20 特殊边界

对于所有数据:1n,m1051 \le n, m \le 10^51x,yn1 \le x, y \le n1kn1 \le k \le nx+k1nx+k-1 \le ny+k1ny+k-1 \le n0Wi<2300 \le W_i < 2^{30}