#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int N;
  cin >> N;
  vector<long long int> a(N);
  unordered_multiset<long long int> ums;
  for (int i = 0; i < N; i++) {
    cin >> a[i];
    ums.insert(a[i]);
  }
  vector<long long int> x(N, 0);
  x[0] = a[0];
  auto itr = ums.find(a[0]);
  ums.erase(itr);
  long long int y;
  bool flag = false;
  for (long long int i = 1; i < N; i++) {
    y = x[0] ^ a[i];
    auto itr = ums.find(y);
    if (itr != ums.end()) {
      x[N - 1] = y;
      ums.erase(itr);
      x[1] = a[i];
      auto itr = ums.find(a[i]);
      ums.erase(itr);
      flag = true;
    }
  }
  if (!flag) {
    cout << "No" << endl;
    return 0;
  }
  if (N > 3) {
    for (long long int i = 2; i <= N - 2; i++) {
      flag = false;
      y = x[i - 1] ^ x[i - 2];
      auto itr = ums.find(y);
      if (itr != ums.end()) {
        x[i] = y;
        ums.erase(itr);
        flag = true;
      }
      if (!flag) {
        break;
      }
    }
  }
  if (!flag) {
    cout << "No" << endl;
  } else {
    cout << "Yes" << endl;
  }
  return 0;
}
