#P6143. LYK loves games

LYK loves games

Description

LYK喜欢玩游戏,它找到一棵有 n个节点的树,打算在这棵树上面玩游戏。 首先它在所有节点上都规定一个点权 ai,然后它选择从一个点 A出发,经过最短路到达点B并记录下所经过的所有点的点权,LYK将会得到这些点权的异或和的开心值。 LYK想得到更多的开心值,于是它把所有不同点对 A,B(共 n*(n-1)对)所得到的开心值累加起来,作为LYK最终的开心值。于是 LYK想让你帮它计算出它最终的开心值是多少。

不过这个问题看起来十分easy。于是LYK共有Q次修改的机会,每次它会选择一个点X, 将它的点权修改为Y。你需要计算出每次修改完成后 LYK 最终的开心值。

Format

Input

第一行两个整数n,Q。

接下来一行n个数ai,表示这棵树中所有点初始点权。

接下来n-1 行,每行两个数 u,v表示存在一条边连接 u,v两个点。

接下来Q行,每行两个数X,Y 表示对于这次修改操作,将第X个点的点权修改成 Y。

对于100%的数据:

n,Q<=10000,0<=任意时刻任意点的点权<32768,点权随机。

其中均匀分布着50%的数据树是随机的。

Output

输出共Q行,每行表示修改完之后 LYK最终的开心值。

Samples

5 5 
1 2 3 4 5 
1 2 
1 3 
2 4 
2 5 
1 3 
2 4 
4 4 
5 3 
2 1 
82 
46 
46 
70 
60