/*
博弈问题,sg游戏。
计算sg值。这里每次操作之后,会产生两个子问题。所以异或之后才是这次操作之后的sg值,然后选择一个不在
这个sg集合中的最小的自然数。就ok了。easy....
*/
#include <cstdio>
#include <cstring>
int sg[55];
bool used[55];
int N;
void init()
{
sg[0] = 0;
sg[1] = 0;
sg[2] = 1;
for(int i=3;i<=50;i++)
{
memset(used,0,sizeof(used));
for(int j=0;j<=i-2;j++)
{
used[ sg[j]^sg[i-2-j] ] = 1;
}
for(int j=0;j<=50;j++)
{
if( !used[j] )
{
sg[i] = j;
break;
}
}
}
}
int main()
{
init();
int a,ans;
while(scanf("%d",&N)==1)
{
ans = 0;
for(int i=0;i<N;i++)
{
scanf("%d",&a);
ans ^= sg[a];
}
if(ans) printf("Yes\n");
else printf("No\n");
}
return 0;
}