
There exists an undirected tree with n nodes numbered 0 to n - 1 . You are given a 0-indexed 2D integer array edges of length n - 1 , where edges[i] = [u _i , v _i ] indicates that there is an edge between nodes u _i and v _i in the tree. You are also given a positive integer k , and a 0-indexed array of non-negative integers nums of length n , where nums[i] represents the value of the node numbered i .
Alice wants the sum of values of tree nodes to be maximum , for which Alice can perform the following operation any number of times ( including zero ) on the tree:
Choose any edge [u, v] connecting the nodes u and v , and update their values as follows:
nums[u] = nums[u] XOR k
nums[v] = nums[v] XOR k
Return the maximum possible sum of the values Alice can achieve by performing the operation any number of times .
2 <= n == nums.length <= 2 * 10 ^41 <= k <= 10 ^90 <= nums[i] <= 10 ^9edges.length == n - 1edges[i].length == 20 <= edges[i][0], edges[i][1] <= n - 1The input is generated such that edges represent a valid tree.