/*
* a.cpp
*
* Created on: 2013-10-20
* Author: wangzhu
*/
#include<cstdio>
#include<iostream>
using namespace std;
#define NMAX 1010
int arr[NMAX];
//获取n的最末位的1
int find(int n) {
return n & (n ^ (n - 1));
}
int main() {
freopen("data.in", "r", stdin);
int n,num1,num2,numTemp1,numTemp2;
while(~scanf("%d",&n)) {
for(int i = 0;i < n;i++) {
scanf("%d",arr + i);
}
numTemp1 = 0;
for(int i = 0;i < n;i++) {
numTemp1 ^= arr[i];
}
numTemp2 = find(numTemp1);
num1 = 0,num2 = 0;
for(int i = 0;i <n;i++) {
if(numTemp2&arr[i]) {
num1 ^= arr[i];
} else {
num2 ^= arr[i];
}
}
if(num1 > num2) {
printf("%d %d\n",num2,num1);
} else {
printf("%d %d\n",num1,num2);
}
}
return 0;
}