#include <bits/stdc++.h>
using namespace std;
struct P {
  int x, y;
  bool operator<(const P &a) const {
    if (x != a.x) return x < a.x;
    return y < a.y;
  }
};
long long x, y, z, mod = 998244353;
vector<int> v;
int i, n, m, k, a, d, b, c;
int e;
int o[111111];
int l[1];
int j[1];
queue<int> q;
P u[1];
bool as(P a, P b) { return a.x < b.x; }
int main() {
  scanf("%d", &a);
  for (int t = 1; t <= a; t++) scanf("%d", &o[t]);
  sort(o + 1, o + a + 1);
  if (o[1] == o[a] && o[1] == 0) {
    puts("Yes");
    return 0;
  }
  if (a % 3 || o[a / 3 + 1] != o[a / 3 * 2 + 1]) {
    puts("No");
    return 0;
  }
  for (int t = 1; t <= a / 3; t++)
    if (o[t] != o[1] || o[a / 3 + 1] != o[t + a / 3] ||
        o[a / 3 * 2 + 1] != o[a / 3 * 2 + t]) {
      puts("No");
      return 0;
    }
  if ((o[1] ^ o[a / 3 + 1]) == o[a / 3 * 2 + 1])
    puts("Yes");
  else
    puts("No");
}
