// Slower C++ solution:
//#pragma GCC optimize("Ofast")

//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,avx,avx2")

#include <bits/stdc++.h>



using namespace std;



#define PB push_back

#define MP make_pair

#define EB emplace_back

#define f first

#define s second

#define FOR(i,a,b) for (int i = a; i < (b); ++i)

#define RFOR(i, b, a) for (int i = b-1; i>=a; --i)

#define FILL(a, b) memset(a, b, sizeof a)

#define ALL(a) a.begin(), a.end()

#define SZ(a) ((int)a.size())

#define bitc(n) __builtin_popcount(n)

#define MAGIC0 mt19937 rnd(time(0)); //rnd()



typedef long long LL;

typedef unsigned long long ULL;

typedef vector<int> VI;

typedef pair<int, int> PII;

typedef pair<LL, LL> PLL;



const int INF = 1000 * 1000 * 1000 + 7;

const LL LINF = 1LL * INF*INF;

const int MAX = 1e6 + 7;

const double PI = acos(-1.);

const double EPS = 1e-7;

const int MAXN = 100005;



mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());



unordered_map<int, int> mep(200007);



int main()

{

	ios_base::sync_with_stdio(0);

	//freopen("input.txt", "r", stdin);

	//freopen("output.txt", "w", stdout);

	time_t st = clock();

	int n;

	cin >> n;

	VI a(n);

	FOR(i, 0, n)

	{

		cin >> a[i];

		mep[a[i]]++;

	}

	

	deque<int> res;

	int ind = rnd() % n;

	res.PB(a[ind]);

	mep[a[ind]]--;

	FOR(i, 0, n)

	{

		if (mep[a[i]] == 0 || !mep.count(a[i] ^ a[ind]) || mep[a[i] ^ a[ind]] == 0)

		{

			continue;

		}

		res.PB(a[i]);

		mep[a[i]]--;

		int it = 0;

		while(true)

		{

			if (((double)clock() - st) / CLOCKS_PER_SEC >= 1.9)

			{

				cout << "No\n";

				return 0;

			}

			++it;

			if (it % 2 == 0)

			{

				int sz = SZ(res);

				int el = res[sz-1] ^ res[sz-2];

				if (mep.count(el) && mep[el] > 0)

				{

					res.PB(el);

					mep[el]--;

				}

				else

				{

					break;

				}

			}

			else

			{

				int el = res[0] ^ res[1];

				if (mep.count(el) && mep[el] > 0)

				{

					res.push_front(el);

					mep[el]--;

				}

				else

				{

					break;

				}

			}

		}

		if (SZ(res) == n)

		{

			cout << "Yes\n";

			return 0;

		}

		while(SZ(res) > 1)

		{

			mep[res.back()]++;

			res.pop_back();

		}

	}

	

	cout << "No\n";

	

	return 0;

}
















// Faster C++ solution for the same problem (measured speedup: 3.1722610093092736x):
//https://vjudge.net/contest/342760#problem/A

/*

* Author : MaxSally

*/

/********   All Required Header Files ********/

#include<bits/stdc++.h>

using namespace std;

/*******  All Required define Pre-Processors and typedef Constants *******/

#define SCD(t) scanf("%d",&t)

#define SCLD(t) scanf("%ld",&t)

#define SCLLD(t) scanf("%lld",&t)

#define SCC(t) scanf("%c",&t)

#define SCS(t) scanf("%s",t)

#define SCF(t) scanf("%f",&t)

#define SCLF(t) scanf("%lf",&t)

#define mem(a, b) memset(a, (b), sizeof(a))

#define rep(i, j, k) for (int i = j ; i <= k ; ++i)

#define rrep(i, j, k) for (int i = j; i >= k; --i)

#define all(cont) cont.begin(), cont.end()

#define rall(cont) cont.end(), cont.begin()

#define foreach(i, a) for(auto i: a)

#define forEach(it, l) for (auto it = l.begin(); it != l.end(); it++)

#define in(A, B, C) assert( B <= A && A <= C)

#define mp make_pair

#define pb push_back

#define inf (int) (1e9 + 7)

#define epsi 1e-9

#define PI 3.1415926535897932384626433832795

#define mod 1000000007

#define read(type) readInt<type>()

#define io ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

#define ll long long int

#define left tuyiuoi

#define right fgjhk

#define ss second

#define ff first

#define debug(a) cout << #a << ": " << a << endl

#define debuga1(a, l, r) rep(i, l, r) cout << a[i] << " "; cout << endl

#define Flag(n) cout << "here " << n << endl

const double pi=acos(-1.0);

typedef pair<int, int> pii;

typedef vector<int> vi;

typedef vector<ll> vl;

typedef vector<vl> vll;

typedef pair<ll, ll> pll;

typedef vector<string> vs;

typedef vector<pii> vii;

typedef vector<pll> vpll;

typedef vector<vi> vvi;

typedef map<int,int> MPII;

typedef set<int> SETI;

typedef multiset<int> MSETI;

typedef long int int32;

typedef unsigned long int uint32;

typedef long long int int64;

typedef unsigned long long int  uint64;



const int N = 100005;

int n, a[N];



int main(){

    io;

    //freopen("input.txt", "r", stdin);

    cin >> n;

    int totalSum = 0;

    rep(i, 1, n){

        cin >> a[i];

        totalSum ^= a[i];

    }

    cout << (totalSum == 0? "Yes": "No");



    return 0;

}