#include <bits/stdc++.h>
using namespace std;
long long N, A[101010];
map<long long, long long> mk;
long long i, j, ans;
int main() {
  scanf("%lld", &N);
  for (i = 0; i < N; i++) {
    scanf("%lld", &A[i]);
  }
  for (i = 0; i < N; i++) {
    if (A[i] != 0) break;
  }
  if (i == N) {
    printf("Yes");
    return 0;
  }
  if (N % 3 != 0) {
    printf("No");
    return 0;
  }
  j = 0;
  for (i = 0; i < N; i++) {
    if (mk.find(A[i]) == mk.end()) {
      if (mk.size() == 3) {
        printf("No");
        return 0;
      }
    }
    mk[A[i]]++;
  }
  if (mk.size() == 1) {
    printf("No");
    return 0;
  }
  if (mk.size() == 2) {
    auto it = mk.begin();
    auto a = *it;
    ++it;
    auto b = *it;
    if (0 == a.first && a.second == b.second * 2) {
      goto yes;
    } else if (0 == b.first && a.second * 2 == b.second) {
      goto yes;
    }
    printf("No");
    return 0;
  }
  if (mk.size() == 3) {
    auto it = mk.begin();
    auto a = *it;
    ++it;
    auto b = *it;
    ++it;
    auto c = *it;
    if ((a.first ^ b.first) != c.first || a.second != b.second ||
        a.second != c.second) {
      printf("No");
      return 0;
    }
  }
yes:
  printf("Yes");
  return 0;
}
