时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
            空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
             64bit IO Format: %lld
        
     
    题目描述
        
        
    
            
            有 N 个整数数组,将他们按照这样的步骤合并:
 * 从所有非空数组的第一个元素中选最小的那个,从它所在的数组中删去并加入到输出数组的末尾
 * 重复执行上述过程,直到所有数组为空。
 很显然,如果所有数组都是有序的,你得到的数组也会是有序的。
 现在你知道这 N 个数组的值,需要实现这样一个算法,支持对数组的修改和查询。
 * 对于一个修改操作,给定两个参数 x, y,表示将数组中的 x 替换成 y 。在操作前和操作后都保证同一个数字最多出现一次。
 * 对于一个查询操作,给定一个参数 x,表示查询合并后的数组从 x 位开始的 K 个数字。
 聪明的你一定能出色的完成这道题!
                            输入描述:
                                                    第一行三个整数 N, M, K.
接下来 N 行描述 N 个数组,每行以一个整数 n 开始,表示这个数组的元素个数,后面接 n 个整数 a1, ..., an. 注意,这里 a1, ..., an 以大写16进制表示,每个数字长度不超过4。
接下来 M 行描述 M 个操作,满足下面两种形式之一:
* "U x y"(不含引号)。表示一次修改操作。x, y 以大写16进制的形式给出,长度不超过4.
* "Q x"(不含引号)。表示一次查询操作。x 以大写16进制的形式给出,长度不超过4.
                                                                            输出描述:
                                                    对于每个询问操作,输出合并后的数组从第 x 项开始的最多 K 个元素,以空格隔开,用大写16进制表示,注意不要有前导零。
                                                                            
                        
                            示例1
                        
                        
                            
                                输入
                                复制
                                
                                
                                    2 5 3
2 4 2
3 6 A 1
Q 3
U 1 F
Q 4
U F 1
Q 1
                                 
                             
                            
                                                     
                     
                                                        备注:
                2 ≤ N ≤ 10

M ≤ 105,其中询问次数乘以K 不超过 2·105。
K ≤ 10