using System;
using static System.Console;
using static System.Math;
using System.IO;
using System.Collections.Generic;
namespace I_am_the_green_coder{
    class Inonoa{
        // なんか入力用の関数作ったけどまだテストしてないので使う前に確かめて
        static void Main(){
            long n = ILongs()[0];
            long[] a = ILongs();
            bool all0 = true;
            for(int i=0;i<n;i++){
                if(a[i]!=0){
                    all0 = false;
                    break;
                }
            }
            if(all0){
                Console.WriteLine("Yes");
                return;
            }
            long val1=-1; long val2=-1; long val3=-1;
            long num1=0;long num2=0;long num3=0;

            for(long i=0;i<n;i++){
                if(val1==-1){
                    val1 = a[i]; num1++; continue;
                }else if(val1==a[i]){
                    num1++; continue;
                }else {
                    if(val2==-1){
                        val2 = a[i]; num2++; continue;
                    }else if(val2==a[i]){
                        num2++;
                        continue;
                    }else{
                        if(val3==-1){
                            num3++;
                            val3 = a[i]; continue;
                        }else if(val3==a[i]){
                            num3++;
                            continue;
                        }else{
                            Console.WriteLine("No");
                            return;
                        }
                    }
                }
            }
            if(!(num1==num2&&num2==num3)){
                Console.WriteLine("No");
                return;
            }
            for(int i=0;i<32;i++){
                long v1 = val1 & 1;
                long v2 = val2 & 1;
                long v3 = val3 & 1;
                long vs = v1+v2+v3;
                if(vs==3||vs==1){
                    Console.WriteLine("No");
                    return;
                }
                val1 >>= 1;
                val2 >>= 1;
                val3 >>= 1;
            }
            Console.WriteLine("Yes");
        }

        static readonly long MOD = 1000000007;

        ///<summary>a_1, a_2, a_3, ...みたいなの</summary>
        static long[] ILongs(){
            string[] s = ReadLine().Split();
            long[] re = new long[s.Length];
            for(long i=0;i<s.Length;i++){
                re[i] = long.Parse(s[i]);
            }
            return re;
        }

        ///<summary>xooxoxoxxoxo...みたいなの</summary>
        static char[] IChars(){
            return ReadLine().ToCharArray();
        }

        ///<summary>n m とかをちょっとはやくかくだけ</summary>
        static string[] IStrings(){
            return ReadLine().Split();
        }

        ///<summary>n行の入力を取ったり</summary>
        static long[][] ILongLongs(long n){
            long[][] re = new long[n][];
            for(long i=0;i<n;i++){
                string[] s = ReadLine().Split();
                re[i] = new long[s.Length];
                for(long j=0;j<s.Length;j++){
                    re[i][j] = long.Parse(s[j]);
                }
            }
            return re;
        }

        ///<summary>n行の文字列を取ったり</summary>
        static char[][] ICharsChars(long n){
            char[][] re = new char[n][];
            for(long i=0;i<n;i++){
                re[i] = ReadLine().ToCharArray();
            }
            return re;
        }
    }
}