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