#P0213. A.选择数组(rotation)

A.选择数组(rotation)

题目描述

给你一个长度为 NN 的数列 AA,初始时 Ai=iA_i=i

AA 执行以下操作共 QQ 个:

  • 操作一:ApxA_p\leftarrow x
  • 操作二:询问 ApA_p
  • 操作三:将 AA 循环左移 kk 个元素长度。
    • 形式化地,执行 A(A2,A3,,AN,A1)A\leftarrow (A_2,A_3,\cdots,A_N,A_1) 操作 kk 次。

输入格式

第一行两个整数 N,Q(1N106,1Q3×105)N,Q(1\le N\le 10^6,1\le Q\le 3\times 10^5)。 接下来 QQ 行,第一个数字表示操作类型。
对于操作一,接下来两个整数 p,xp,x
对于操作二,接下来一个整数 pp
对于操作三,接下来一个整数 kk
保证 1pN,1x106,1k1091\le p\le N,1\le x\le 10^6,1\le k\le 10^9

输出格式

对于每次操作二,输出一行一个整数表示回答。

输入输出样例 #1

输入 #1

5 5
2 3
1 2 1000000
3 4
2 2
2 3

输出 #1

3
1
1000000

输入输出样例 #2

输入 #2

1000000 2
1 1000000 999999
3 1000000000

输出 #2


说明/提示

样例 1 解释

55 个询问。

  • 初始时,A=(1,2,3,4,5)A=(1,2,3,4,5)
  • 第一次操作,询问 A3=3A_3=3
  • 第二次操作,A21000000A_2\leftarrow1000000A=(1,1000000,3,4,5)A=(1,1000000,3,4,5)
  • 第三次操作,AA 循环左移 44 个元素长度,A=(5,1,1000000,3,4)A=(5,1,1000000,3,4)
  • 第四次操作:询问 A2=1A_2=1
  • 第五次操作:询问 A3=1000000A_3=1000000

样例 2 解释

输出可能是空的。