#P2055. 2024.9.12-阿里云(研发)-第2题-子数组

2024.9.12-阿里云(研发)-第2题-子数组

题目内容

fkf_k表示长度为kk的全部子数组元素按位异或的结果。例如:对于原数组{1,2,3,41,2,3,4},长度为33 的子数组有{1,2,31,2,3}和{2,3,42,3,4},因此f3=(123)(234)f_3=(1⊕2⊕3)⊕(2⊕3⊕4)。同理f2=(12)(23)(34)f_2=(1⊕2)⊕(2⊕3)⊕(3⊕4)

现在,对于给定的一个长度为nn的数组{a1,a2,...,ana_1,a_2,...,a_n}。输出f1f_1~ fnf_n

aba⊕b表示aa按位异或bb(按位异或运算符"⊕”是双目运算符。其功能是参与运算的两数各对应的二进位相异或。只要对应的两个二进位不相同时,结果位就为11)。

输入描述

第一行输入一个整数n(1n2×105)n(1≤n≤2×10^5)代表数组中的元素数量。

第二行输入nn个整数a1,a2,...,an(0ai<230)a_1,a_2,...,a_n(0≤a_i<2^{30})代表数组元素,

输出描述

在一行上输出nn个整数,分别表示f1f_1~fnf_n

示例1

输入

3
1 1 1

输出

1 0 1