可持久化并查集加强版
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

自从zkysb出了可持久化并查集后……
hzwer:乱写能AC,暴力踩标程
KuribohG:我不路径压缩就过了!
ndsf:暴力就可以轻松虐!
zky:……

n个集合 m个操作
操作:
  1. a b 合并a,b所在集合
  2. k 回到第k次操作之后的状态(查询算作操作)
  3. a b 询问a,b是否属于同一集合,是则输出1否则输出0
请注意本题采用强制在线,所给的a,b,k均经过加密,加密方法为x = x xor lastans,lastans的初始值为0

输入描述:

第一行为n,m。

接下来m行描述了每个操作,按照题目描述中所述的格式。

每个操作强制在线,需要对输入的 a,b,k 进行运算得到真实的 a,b,k 后再执行操作,运算方法为 x = x xor last_ans,last_ans表示上一个询问的答案,其初始值为0。

输出描述:

对于每个询问操作,输出一个结果,每个结果占一行。
示例1

输入

复制
5 6
1 1 2
3 1 2
2 1
3 0 3
2 1
3 1 2

输出

复制
1
0
1