import qualified Control.Arrow               as Arrow
import qualified Control.Monad               as Monad
import qualified Data.Bits                   as Bits
import qualified Data.List                   as List
import qualified Data.ByteString.Char8       as BSC8
import qualified Data.Vector.Unboxed         as VU

getI :: BSC8.ByteString -> Maybe (Int, BSC8.ByteString)
getI = fmap (Arrow.second BSC8.tail) . BSC8.readInt
getAN :: Int -> IO (VU.Vector Int)
getAN n = VU.unfoldrN n getI <$> BSC8.getLine

main :: IO ()
main = do
  n  <- readLn :: IO Int
  xs <- getAN n
  let ys = VU.map (Bits.xor (VU.foldl1' Bits.xor xs)) xs
  Monad.forM_ [0..(n-2)] $ \i -> do
    putStr $ show $ ys VU.! i
    putStr " "
  putStrLn $ show $ ys VU.! (n - 1)