河流管理
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

你在一个星球上,外星人amiloac想让你管理一条河流,该河流有x段,每两段之间有一个挡板隔开,每一段都有各自的颜色a。你需要管理q天,每一天你需要做以下的一种操作。

1\ l\ r将第lr段河流的所有未打开的挡板打开。

2\ x询问你第x段河流的颜色是什么。
对于任意相邻的两段,它们之间的隔板被打开后的瞬间,河流的颜色会混合变成颜色最深的河流的颜色,a越大,颜色越深。
注:隔板打开后,河流的段数不会变。请注意不同寻常的空间限制!

输入描述:

第一行为两个整数n,q(1\le n \le 5 \cdot 10^5),(1\le q\le 5 \cdot 10^5),分别表示河流的段数和管理的天数。
第二行为n个整数a_i(1\le i\le n),(1\le a_i\le 10^9),表示每一段河流的颜色。
接下来q行每行第一个数op(1\le op\le 2)表示操作:
如果op=1,则给出两个数l,r(1\le l\le r\le n),表示你需要将第lr段河流的所有未打开的挡板打开;
如果op=2,则给出一个数x(1\le x\le n),表示询问你第x段河流的颜色是什么。

输出描述:

对于每次操作2,输出一个整数ans,表示第x段河流的颜色。
示例1

输入

复制
4 3
3 4 5 6
2 2
1 2 3
2 2

输出

复制
4
5