#include <bits/stdc++.h>
const int MOD = (int)1e9 + 7;
int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; }
int cmp2(const void *a, const void *b) { return *(int *)b - *(int *)a; }
int gcd(int a, int b) {
  if (b != 0) return gcd(b, a % b);
  return a;
}
long long Lgcd(long long a, long long b) {
  if (b != 0) return Lgcd(b, a % b);
  return a;
}
int lcm(int a, int b) { return a / gcd(a, b) * b; }
long long Llcm(long long a, long long b) { return a / Lgcd(a, b) * b; }
int main() {
  int n, a[100000], f = 1;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  if (n % 3)
    f = 0;
  else {
    qsort(a, n, sizeof(int), cmp);
    for (int i = 0; i < n / 3 - 1; i++)
      if (a[i] ^ a[i + 1]) f = 0;
    for (int i = n / 3; i < n / 3 * 2 - 1; i++)
      if (a[i] ^ a[i + 1]) f = 0;
    for (int i = n / 3 * 2; i < n - 1; i++)
      if (a[i] ^ a[i + 1]) f = 0;
    if ((a[0] ^ a[n / 3]) ^ a[n / 3 * 2]) f = 0;
    if ((a[0] ^ a[n / 3 * 2]) ^ a[n / 3]) f = 0;
    if ((a[n / 3] ^ a[n / 3 * 2]) ^ a[0]) f = 0;
  }
  puts(f ? "Yes" : "No");
  return 0;
}
