#include <bits/stdc++.h>
using namespace std;
using P = pair<long long, long long>;
template <class T>
bool chmax(T& a, const T& b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T& a, const T& b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
const long long INF = 1e9;
const long long MOD = 1e9 + 7;
signed main() {
  long long N;
  cin >> N;
  vector<long long> a(N);
  long long zero = 0;
  set<long long> st;
  for (long long(i) = (0); (i) < (N); (i)++) {
    cin >> a[i];
    if (a[i] == 0) {
      zero++;
    }
    st.insert(a[i]);
  }
  sort((a).begin(), (a).end());
  if (zero == N) {
    cout << "Yes" << endl;
    return 0;
  }
  if (N % 3 == 0) {
    if (zero != 0 && zero % 2 == 0 && st.size() == 2) {
      if ((N - zero) == zero * 2) {
        cout << "Yes" << endl;
        return 0;
      }
    }
    if (st.size() == 3) {
      long long x = a[0];
      long long y = *upper_bound((a).begin(), (a).end(), x);
      long long z = *upper_bound((a).begin(), (a).end(), y);
      if ((long long)(x ^ y) == (long long)z &&
          count((a).begin(), (a).end(), x) ==
              count((a).begin(), (a).end(), y) &&
          count((a).begin(), (a).end(), y) ==
              count((a).begin(), (a).end(), z)) {
        cout << "Yes" << endl;
        return 0;
      }
    }
    cout << "No" << endl;
  } else {
    cout << "No" << endl;
  }
}
