#include <bits/stdc++.h>
using namespace std;
const int inf = numeric_limits<int>::max() >> 2;
const long long linf = numeric_limits<long long>::max() >> 2;
const unsigned long long ulinf = numeric_limits<unsigned long long>::max() >> 2;
const double pi = acos(-1);
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};
const int dx8[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
const int dy8[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
long long modpow(long long i, long long j) {
  long long tmp = 1;
  while (j) {
    if (j % 2) tmp = ((tmp * i) % (long long)(1e9 + 7));
    i = ((i * i) % (long long)(1e9 + 7));
    j /= 2;
  }
  return tmp;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
vector<string> split(const string &str, char sep) {
  vector<string> v;
  stringstream ss(str);
  string buffer;
  while (getline(ss, buffer, sep)) {
    v.push_back(buffer);
  }
  return v;
}
int main() {
  long long n;
  cin >> n;
  long long a[n];
  for (int i = 0; i < (int)(n); i++) cin >> a[i];
  ;
  map<long long, long long> m;
  for (int i = (0); i < (int)(n); i++) m[a[i]]++;
  for (int i = (1); i < (int)(n); i++) {
    long long b = a[0];
    long long c = a[i];
    map<long long, long long> aa = m;
    aa[c]--;
    int cnt = 1;
    while (cnt < n) {
      long long d = b ^ c;
      if (aa[d] > 0) {
        aa[d]--;
        b = c;
        c = d;
        cnt++;
      } else
        break;
    }
    if (cnt >= n) {
      cout << "Yes" << endl;
      return 0;
    }
  }
  cout << "No" << endl;
  return 0;
}
