P1077

Nim

Nim

著名游戏设计师 vfleaking 最近迷上了 Nim 游戏。

普通的 Nim 游戏由两名玩家进行。游戏开始时有 nn 堆石子,每名玩家每回合可以从任意一堆中取走任意正整数颗石子,也可以将该堆全部取完。无法继续取石子的一方失败。

为了寻找合适的初始局面,vfleaking 准备了 nn 堆石子,编号为 1,2,…,n1,2,\ldots,n,并在石子堆之间连接了 n−1n-1 条边。图中不存在自环和重边,且任意两堆石子之间都恰好存在一条路径。

接下来,vfleaking 会进行以下两类操作:

  • 选择两堆石子 v,uv,u,询问以从 vv 到 uu 的路径上的所有石子堆作为 Nim 游戏的初始局面时,先手是否存在必胜策略;
  • 将第 vv 堆石子的数量修改为 kk。

请你编写程序,回答所有询问。

输入格式

第一行包含一个整数 nn,表示石子堆的数量。

第二行包含 nn 个整数,其中第 ii 个整数表示第 ii 堆石子的数量。

接下来 n−1n-1 行,每行包含两个整数 v,uv,u,表示石子堆 vv 与石子堆 uu 之间有一条边直接相连。

接下来一行包含一个整数 qq,表示操作的数量。

接下来 qq 行,每行描述一个操作:

  • Q v u:询问以从 vv 到 uu 的路径上的所有石子堆作为 Nim 游戏的初始局面时,先手是否存在必胜策略;
  • C v k:将第 vv 堆石子的数量修改为 kk。

输出格式

对于每个 Q 操作输出一行。如果先手存在必胜策略,输出 Yes;否则输出 No。

样例输入

5
1 3 5 2 5
1 5
3 5
2 5
1 4
6
Q 1 2
Q 3 5
C 3 7
Q 1 2
Q 2 4
Q 5 3

样例输出

Yes
No
Yes
Yes
Yes

数据范围

  • 对于全部数据,1≤n≤5×1051\le n\le 5\times 10^5,1≤q≤5×1051\le q\le 5\times 10^5;
  • 在任意时刻,每堆石子的数量均满足 0≤k≤INT_MAX0\le k\le \mathrm{INT\_MAX};
  • 对于 30%30\% 的数据,石子堆构成一条链,使用递归深度优先搜索可能会导致栈溢出;其他数据使用深度优先搜索预计不会发生栈溢出。

来源与许可

本题题面与测试数据整理自 BZOJ。

样例 1

输入

5
1 3 5 2 5
1 5
3 5
2 5
1 4
6
Q 1 2
Q 3 5
C 3 7
Q 1 2
Q 2 4
Q 5 3

输出

Yes
No
Yes
Yes
Yes