小 Z 有一片森林,含有 个节点,每个节点上都有一个非负整数作为权值。初始的时候,森林中有 条边。小 Z 希望执行 个操作,操作有两类:
Q x y k 查询点 到点 路径上所有的权值中,第 小的权值是多少。此操作保证点 和点 连通,同时这两个节点的路径上至少有 个点。
L x y 在点 和点 之间连接一条边。保证完成此操作后,仍然是一片森林。
为了体现程序的在线性,我们把输入数据进行了加密。设 为程序上一次输出的结果,初始的时候 为 。 对于一个输入的操作 Q x y k,其真实操作为 Q x^lastans y^lastans k^lastans。 对于一个输入的操作 L x y,其真实操作为 L x^lastans y^lastans。其中 ^ 运算符表示异或,等价于 Pascal 中的 xor 运算符 请写一个程序来帮助小 Z 完成这些操作。
输入格式
第一行包含一个正整数 ,表示当前测试数据的测试点编号。第二行包含三个整数 ,分别表示节点数、初始边数、操作数。第三行包含 个非负整数表示 个节点上的权值。接下来 行,每行包含两个整数 和 ,表示初始的时候,点 和点 之间有一条无向边。 接下来 行,每行描述一个操作,格式为 Q x y k 或者 L x y ,其含义见题目描述部分。