#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;

int main(){
	int N;
	cin >> N;
	vector<vll> vv;
	bool flg;
	for(int i=0; i<N; i++){
		ll a;
		cin >> a;
		flg=true;
		for(int j=0; j<vv.size(); j++){
			if(vv[j][0]==a){
				flg=false;
				vv[j][1]++;
				break;
			}
		}
		if(flg){
			vll v(2);
			v[0]=a;
			v[1]=1;
			vv.push_back(v);
		}
	}

	bool ok=false;
	if(vv.size()==1){
		if(vv[0][0]==0){
				cout << "Yes" << endl;
				return 0;
		}
	}else if(vv.size()==2){
		if((vv[0][0]==1 && vv[1][0]==0){
			if(vv[0][1]==2*vv[1][1]){
				ok=true;
			}
		}else if(vv[0][0]==0 && vv[1][0]==1){
			if(2*vv[0][1]==vv[1][1]){
				ok=true;
			}
		}
	}
	if(!ok){
		cout << "No" << endl;
		return 0;
	}

	if(N%3!=0){
		cout << "No" << endl;
		return 0;
	}
	if(vv.size()!=3){
		cout << "No" << endl;
		return 0;
	}
	if(vv[0][1]!=vv[1][1] || vv[1][1]!=vv[2][1] || vv[0][1]!=vv[2][1]){
		cout << "No" << endl;
		return 0;
	}
	if(vv[0][0]!=(ll)(vv[1][0]^vv[2][0])){
		cout << "No" << endl;
		return 0;
	}

	cout << "Yes" << endl;
	return 0;
}