using System;
using System.Linq;//リストの使用
using System.Collections.Generic;
using System.Text;//テキストの高速出力に必要
class Program
{
	static void Main()
	{
		int n = int.Parse(Console.ReadLine());
		long[] nums = Array.ConvertAll(Console.ReadLine().Split(' '),long.Parse);
    bool answer = true;
    bool[] zeroFirst = new bool[n];
    bool[] zeroSecond = new bool[n];
    bool[] zeroThird = new bool[n];
    int zeroCount = 0;
    int zeroType = -1;
    int zeroUsed = 0;

    if(n % 3 != 0) answer = false;
    else
    {
      Array.Sort(nums);
      for(int i = 0; i <= 30; i++)//2進数
      {
        //Console.WriteLine(i+" "+answer);
        zeroCount = 0;
        zeroType = -1;
        bool answerMemo = true;
        
        for(int j = 0; j < n; j++)//全部の数
        {
          if((nums[j] & (1<<i)) == 0)
          {
            zeroCount++;
            
            if(zeroType == -1)
            {
              zeroType = 0;
              if(zeroFirst[j]) zeroType = 1;
              else if(zeroSecond[j]) zeroType = 2;
              else if(zeroThird[j]) zeroType = 3;
              else zeroUsed++;
            }

            if(zeroType == 0)
            {
              if(zeroUsed == 1) zeroFirst[j] = true;
              else if(zeroUsed == 2)
              {
                zeroSecond[j] = true;
                if(zeroFirst[j]) answerMemo = false;
              }
              else if(zeroUsed == 3)
              {
                zeroThird[j] = true;
                if(zeroFirst[j] || zeroSecond[j]) answerMemo = false;
              }
            }else if(zeroType == 1)
            {
              if(!zeroFirst[j]) answerMemo = false;          
            }else if(zeroType == 2)
            {
              if(!zeroSecond[j]) answerMemo = false;          
            }else if(zeroType == 3)
            {
              if(!zeroThird[j]) answerMemo = false;          
            }
          }
        }

        if(zeroCount != n && zeroCount != n/3) answer = false;
        if(zeroCount == n)
        {
          zeroUsed--;
          answerMemo = true;
          if(zeroType == 0)
          {
            for(int a = 0; a < n; a++) zeroFirst[a] = false;
          }else if(zeroType == 1)
          {
            for(int a = 0; a < n; a++) zeroSecond[a] = false;
          }else if(zeroType == 2)
          {
            for(int a = 0; a < n; a++) zeroThird[a] = false;
          }
        }

        if(!answerMemo) answer = false;
      }
    }

		Console.WriteLine(answer?"Yes":"No");
	}
}