区间第k大
题号:NC208615
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

有一列长为的数列A,有m个询问和修改:

对于询问,表示A中询问区间[l,r]中第k大的数是多少。(如果某数在区间中最大值的个数超过两个时次大值等于最大值)

对于修改,表示修改A中第pos个数为x

输入描述:

一个数n,表示数列A长度为n。

接下来一行n个数表示数列A。

下一行接一个数m表示有m个询问。

对于询问:格式为,1表示询问,l、r表示询问的区间,k表示第k大。

对于修改:格式为,2表示修改,pos表示修改的位置,x表示修改为x。

输出描述:

对于每个询问输出一个数表示答案。
示例1

输入

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

输出

复制
2
3
4