186 动态树

内存限制:128 MB 时间限制:1000 ms

题目描述

给定 $n$ 个点(编号为 $1 \sim n$)以及每个点的权值,你需要在此基础上处理接下来给出的 $m$ 个操作。
操作有以下四种:

  • 0 x y 代表询问从 $x$ 到 $y$ 的路径上的点的权值的 $\text{xor}$ 和。保证 $x$ 到 $y$ 是联通的。
  • 1 x y 代表连接 $x$ 到 $y$,若 $x$ 到 $y$ 已经联通则无需连接。
  • 2 x y 代表删除边 $(x,y)$,不保证边 $(x,y)$ 存在。
  • 3 x y 代表将点 $x$ 上的权值变成 $y$。

输入格式

第一行两个整数,分别为 $n$ 和 $m$,代表点数和操作数。

接下来 $n$ 行,每行一个整数,第 $(i + 1)$ 行的整数 $a_i$ 表示节点 $i$ 的权值。

接下来 $m$ 行,每行三个整数,分别代表操作类型和操作所需的值。

输出格式

对于每一个 $0$ 号操作,你须输出一行一个整数,表示 $x$ 到 $y$ 的路径上点权的 $\text{xor}$ 和。

样例 1

样例 2

数据范围与提示

对于全部的测试点,保证:

  • $1 \leq n, m \leq 3 \times 10^5$,$1 \leq a_i \leq 10^9$。
  • 对于操作 $0, 1, 2$,保证 $1 \leq x, y \leq n$。
  • 对于操作 $3$,保证 $1 \leq x \leq n$,$1 \leq y \leq 10^9$。

样例

样例输入 1

3 3 1 2 3 1 1 2 0 1 2 0 1 1

样例输出 1

3 1

样例输入 2

5 14 114 514 19 19 810 1 1 2 0 1 2 2 1 2 1 1 2 1 2 3 2 1 3 1 1 3 1 4 5 1 2 5 0 3 5 0 3 4 3 5 233333 0 1 5 0 2 5

样例输出 2

624 315 296 232709 232823