#include <bits/stdc++.h>
int main() {
  int n, a[10000], flag[10000], i, j, k, bigflag = 0;
  int kurai[10000][40];
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    for (j = 30; j >= 0; j--) {
      kurai[i][j] = a[i] % (int)(pow(2, (double)j));
    }
  }
  flag[0] = 0;
  flag[1] = 0;
  flag[n - 1] = 0;
  for (j = 30; j >= 0; j--) {
    if ((kurai[0][j] - (kurai[n - 1][j] + kurai[1][j])) % 2 == 0) {
      flag[0]++;
    }
  }
  if (flag[0] == 31) bigflag++;
  for (j = 30; j >= 0; j--) {
    if ((kurai[n - 1][j] - (kurai[n - 2][j] + kurai[0][j])) % 2 == 0) {
      flag[n - 1]++;
    }
  }
  if (flag[n - 1] == 31) bigflag++;
  for (i = 1; i < n - 1; i++) {
    flag[i] = 0;
    for (j = 30; j >= 0; j--) {
      if ((kurai[i][j] - (kurai[i - 1][j] + kurai[i + 1][j])) % 2 == 0) {
        flag[i]++;
      }
    }
    if (flag[i] == 31) bigflag++;
  }
  if (bigflag == n)
    printf("Yes");
  else
    printf("No");
  return 0;
}
