> File Name: 3537.cpp
> Author: jiangyuzhu
> Mail: 834138558@qq.com
> Created Time: 2016/7/31 13:46:50
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<algorithm>
using namespace std;
const int maxn = 1e2 + 5;
int a[maxn];
bool vis[maxn];
int sg[maxn];
void gao()
{
sg[0] = 1;
for(int i = 1; i < 50; i++){
memset(vis, false, sizeof(vis));
for(int j = 0; j < i; j++) vis[sg[j]] = true;
for(int j = 0; j < i; j++){
for(int k = 0; k < j; k++){
vis[sg[j] ^ sg[k]] = true;
}
}
for(int j = 1;; j++){
if(!vis[j]){
sg[i] = j;
break;
}
}
cout<<i<<' '<<sg[i]<<" cal "<< __builtin_popcount(2 * i) <<endl;
}
}
int main (void)
{
int n;
while(~scanf("%d", &n)){
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
sort(a, a + n);
int nn = unique(a, a + n) - a;
int ans = 0;
for(int i = 0; i < nn; i++){
if(__builtin_popcount(a[i]) & 1) ans ^= 2 * a[i];
else ans ^= 2 * a[i] + 1;
}
if(ans) puts("No");
else puts("Yes");
}
return 0;
}