#include<iostream>
#include<cstring>
#include<unordered_set>
using namespace std;
const int N = 110;
int f[N];//记录每个数量的石子的sg值
int eg(int x){
if(f[x] != -1) return f[x];//如果x的eg值已经被计算过,直接返回
unordered_set<int> S;
for(int i = 0; i < x; i ++ ){//i表示第一堆石子的数量
for(int j = 0; j <= i; j ++ ){//j表示第二堆石子的数量,避免重复,j<=i
S.insert(eg(i) ^ eg(j));//数量为x的石子堆拆分为两个
}
}
for(int i = 0; ; i ++ ){
if(!S.count(i)) return f[x] = i;//返回对应的Mex运算值
}
}
int main()
{
int n;
cin>>n;
int res = 0;
memset(f, -1, sizeof(f));
while(n -- ){
int x;
cin>>x;
res ^= eg(x);
}
if(res) puts("Yes");
else puts("No");
return 0;
}