function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
  input = input.split("\n");
  var num = Number(input[0]);
  var b = {};
  var array = input[1].split(" ");

  // 各数字がいくつあるのか配列で管理する
  for (var i = 0; i < num; i++) {
    if (b[array[i]]){
      b[array[i]]++;
    } 
    else b[array[i]] = 1;
  }
  // 全て0のパターンの場合は存在する
  if (b[0] === num) return console.log("Yes");
  // ３の倍数でないとパターンが存在しない
  if(num%3)return console.log("No");
  
  // ３の倍数のパターン、かつ全て０でないパターン
  // 連続する 3 つの帽子に書かれた数のビットごとの排他的論理和が 0
  var f = 1;
  var x = 0;
  Object.keys(b).forEach((element, index) => {
    // x ⊕ y ⊕ z = 0 が成立するような 3 つの相異なる整数 x, y, z が書かれた帽子がそれぞれ N/3 枚
    if (b[element] !== num / 3) {
      f = 0;
      return true;
    }
    x ^= element;
  });
  
  if (f && x === 0) return console.log("Yes");

  var f = 0;
  Object.keys(b).forEach((element, index) => {
    // 0 が書かれた数が N/3 枚
    if (element == 0  && b[element] === num / 3){
      f++;
    } 
    // x が書かれた帽子が 2N/3 枚
    if (b[element] === num * 2 / 3){
      f++;
    } 
  });
  return console.log(f === 2 ? "Yes" : "No");
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));