#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;


#define int 					long long int
#define pb 						push_back
#define pii 					pair<int,int>
#define vi 						vector<int>
#define pqi 					priority_queue<int>
#define pqim 					priority_queue<int,vector<int>,greater<int>>
#define umis 					unordered_map<int,string>
#define umii 					unordered_map<int,int>
#define msi 				    map<string,int>
#define mii 				    map<int,int>
#define setbits(n)			    __builtin_popcountll(n) // for long long
#define zrbits(n)			    __builtin_ctzll(n)
#define f(i,x,n)			    for(int i=x;i<n;++i)
#define mod			    		1000000007
#define sp(x,y)			    	fixed<<setprecision(y)<<x
mt19937							rng(chrono::steady_clock::now().time_since_epoch().count());
#define fastio                  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;




// ============================================================================================================


int32_t main() {

	fastio;

	int n, num;
	cin >> n;

	int arr[n];
	f(i, 0, n) {
		cin >> num;
		arr[i] = num;
	}

	sort(arr, arr + n);

	if (n >= 130) cout << "Yes" << endl;
	else {
		bool flag = false;
		f(i, 0, n) {
			f(j, i + 1, n) {
				f(k, j + 1, n) {
					int d = (arr[i] ^ arr[j] ^ arr[k]);
					if (binary_search(arr, arr + n, d)) {
						flag = true;
						break;
					}
				}
				if (flag) break;
			}
			if (flag) break;
		}
		if (flag) cout << "Yes" << endl;
		else cout << "No" << endl;
	}
	return 0;
}
