void main(){
	int n = _scan();
	int[] a = _scanln();
	int allxor;
	foreach(elm; a){
		allxor = allxor^elm;
	}
	int[] ans;
	foreach(elm; a){
		ans ~= allxor^elm;
	}
	
	foreach(i, elm; ans){
		if(i == ans.length-1) writeln(elm);
		else writef("%d ", elm);
	}
}

import std.stdio, std.conv, std.algorithm, std.numeric, std.string, std.math;

// 1要素のみの入力
T _scan(T= int)(){
	return to!(T)( readln().chomp() );
}

// 1行に同一型の複数入力
T[] _scanln(T = int)(){
	T[] ln;
	foreach(string elm; readln().chomp().split()){
		ln ~= elm.to!T();
	}
	return ln;
}
