import sys

readline = sys.stdin.buffer.readline

def even(n): return 1 if n%2==0 else 0

"""

全員が自分以外の全員のxorを把握しているので、全員の値を求めよ

nは偶数



桁ごとに独立に考える。

テストケースで検証すると、

その桁において1の数が偶数個の場合は、自分自身の桁の数字を入れる

奇数個の場合は、自分自身の桁の値をbit反転したものを入れる

ことが正解であることが分かる。

これを実装するだけ。

"""

n = int(readline())

lst1 = list(map(int,readline().split()))

limit = 33 #制約10**9は2**32内に収まる。

ans = []

parity = [0]*limit

for i in lst1:

    for j in range(limit):

        parity[j] += i>>j



for i in range(limit):

    parity[i] %= 2



for i in lst1:

    res = 0

    for j in range(limit):

        p = i>>j&1

        if parity[j]== 0 and p== 1:

            res += 1<<j

        elif parity[j] == 1 and p == 0:

            res += 1<<j

    ans.append(res)

print((*ans))
import sys

readline = sys.stdin.buffer.readline

def even(n): return 1 if n%2==0 else 0

"""

全員が自分以外の全員のxorを把握しているので、全員の値を求めよ

nは偶数



桁ごとに独立に考える。

テストケースで検証すると、

その桁において1の数が偶数個の場合は、自分自身の桁の数字を入れる

奇数個の場合は、自分自身の桁の値をbit反転したものを入れる

ことが正解であることが分かる。

これを実装するだけ。

"""

n = int(readline())

lst1 = list(map(int,readline().split()))

res = 0

for i in lst1:

    res = res^i

ans = []

for i in lst1:

    ans.append(res^i)

print((*ans))
import sys

readline = sys.stdin.buffer.readline


def even(n):
    return 1 if n % 2 == 0 else 0


"""
全員が自分以外の全員のxorを把握しているので、全員の値を求めよ
nは偶数
桁ごとに独立に考える。
テストケースで検証すると、
その桁において1の数が偶数個の場合は、自分自身の桁の数字を入れる
奇数個の場合は、自分自身の桁の値をbit反転したものを入れる
ことが正解であることが分かる。
これを実装するだけ。
"""
n = int(readline())
lst1 = list(map(int, readline().split()))
limit = 33  # 制約10**9は2**32内に収まる。
ans = []
parity = [0] * limit
for i in lst1:
    for j in range(limit):
        parity[j] += i >> j
for i in range(limit):
    parity[i] %= 2
for i in lst1:
    res = 0
    for j in range(limit):
        p = i >> j & 1
        if parity[j] == 0 and p == 1:
            res += 1 << j
        elif parity[j] == 1 and p == 0:
            res += 1 << j
    ans.append(res)
print((*ans))

import sys

readline = sys.stdin.buffer.readline


def even(n):
    return 1 if n % 2 == 0 else 0


"""
全員が自分以外の全員のxorを把握しているので、全員の値を求めよ
nは偶数
桁ごとに独立に考える。
テストケースで検証すると、
その桁において1の数が偶数個の場合は、自分自身の桁の数字を入れる
奇数個の場合は、自分自身の桁の値をbit反転したものを入れる
ことが正解であることが分かる。
これを実装するだけ。
"""
n = int(readline())
lst1 = list(map(int, readline().split()))
res = 0
for i in lst1:
    res = res ^ i
ans = []
for i in lst1:
    ans.append(res ^ i)
print((*ans))

-limit = 33  # 制約10**9は2**32内に収まる。 +res = 0 +for i in lst1: +    res = res ^ i -parity = [0] * limit -    for j in range(limit): -        parity[j] += i >> j -for i in range(limit): -    parity[i] %= 2 -for i in lst1: -    res = 0 -    for j in range(limit): -        p = i >> j & 1 -        if parity[j] == 0 and p == 1: -            res += 1 << j -        elif parity[j] == 1 and p == 0: -            res += 1 << j -    ans.append(res) +    ans.append(res ^ i)