克索尼亚有一棵以顶点 为根、包含 个顶点的有根树,每个顶点上写有一个数字。在第 个顶点上写有数字 。
回忆一下,树是一种无环连通图。有根树是指在树中选择一个顶点作为根。
在有根树中,顶点 的祖先是指从 到根路径上的所有顶点(不包括顶点 本身)。顶点 的子树是指所有以 为祖先的顶点集合,包括顶点 本身。
集合 的 XOR 和定义为数字 ,其中 是按位异或操作,在 Pascal 语言中记为 xor,在 C++/Java/Python 语言中记为 ^。
对于数字集合 ,考虑其所有可能子集的 XOR 和构成的集合。称此集合为 。
克索尼亚的朋友不断问她这样的问题——“如果考虑顶点 的子树中所有数字的集合(记为 ),那么集合 中按升序排列的第 个数是什么?”也就是说,如果取出顶点 子树中的所有数字,考虑它们所有子集的 XOR 和,那么在得到的集合中,按升序排列的第 个数是什么?如果不存在这样的数(即 ),则克索尼亚回答数字 。请注意, 是一个集合,而不是多重集。也就是说,如果一个数字出现多次,只应计入一次。
此外,克索尼亚的朋友有时会请她更改树中的一个数字。