【题目描述】
小 Z 今天碰到了一个很有意思的题目:
给定一个 $n\times m$ 的矩形,第 $i$ 行第 $j$ 列值为 $a_{i,j}$ ,你需要支持两种操作:
1 x y k
: 求将第 $x$ 行和第 $y$ 行归并之后的,从大往小数的第 $k$ 大的数。
2 x y
: 将第 $x$ 行最后一个满足 $a_{x,i}\le y$ 的第 $i$ 个的值改为 $y$, 如果没有就不操作。
小 Z 感觉这个问题似曾相识,他已经写好代码了,希望你能够帮他写一个程序来帮他验证他的代码。
【输入格式】
从文件 familiar.in
中读入数据。
第一行有 $n, m, T$ 分别表示矩形有 $n$ 行 $m$ 列,总共有 $T$ 次操作。
接下来 $n$ 行,每行 $m$ 个正整数,第 $i$ 行第 $j$ 列的正整数为 $a_{i,j}$。
接下来 $T$ 行每行有 opt 表示操作种类: opt = 1 : 给定 $x, y, k$,意义见题目描述。 opt = 2 : 给定 $x, y$,意义见题目描述。
【输出格式】
输出到文件 familiar.out
中。对于每一个操作 1 ,输出其答案。
样例输入
3 3 5
2 6 7
1 4 9
3 5 8
1 1 2 3
1 2 3 1
2 3 12
1 2 3 1
1 1 3 5
样例输出
6
9
12
3
数据范围
对于所有的数据, 满足 $1\le n,m\le 1000,T\le 10^6,1\le a_{i,j}\le 10^9,1\le k\le 2m$。