#include<bits/stdc++.h>
using namespace std;
int f[1007],SG[1007],S[1007];//f为可以选取的石头个数,SG为sg函数,S为后继状态的集合
int n,l,r;
int cnt=0;
void getSG(int n){//SG函数打表
int i,j;
memset(SG,0,sizeof(SG));
for(i = 1; i <= n; i++){
memset(S,0,sizeof(S));
for(j = 0; f[j] <= i && j < cnt; j++)
S[SG[i-f[j]]] = 1;
for(j = 0;;j++) if(!S[j]){
SG[i] = j;
//printf("%d ",SG[i]);
break;
}
}
}
using namespace std;
int f[1007],SG[1007],S[1007];//f为可以选取的石头个数,SG为sg函数,S为后继状态的集合
int n,l,r;
int cnt=0;
void getSG(int n){//SG函数打表
int i,j;
memset(SG,0,sizeof(SG));
for(i = 1; i <= n; i++){
memset(S,0,sizeof(S));
for(j = 0; f[j] <= i && j < cnt; j++)
S[SG[i-f[j]]] = 1;
for(j = 0;;j++) if(!S[j]){
SG[i] = j;
//printf("%d ",SG[i]);
break;
}
}
}
int nim(int x){
if(x<l)
return 0;//无用,都拿不了
if(l==1)//打表得到的坑点
return x%(r+l);
else{//其余可总结出规律
x-=r;
x%=(l+r);
x/=l;
if(!x)
return 1;
else if(x==1)
return 0;
else
return x;
}
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&l,&r);
//for(int k=l;k<=r;k++)
//f[cnt++]=k;//将可选取的f数组构建
int y;
int ans=0;
int flag=0;
//getSG(1000);
for(int i=1;i<=n;i++){
scanf("%d",&y);
if(y>=l&&y<=r)
flag=1;
ans^=nim(y);//nim游戏规律
}
puts(ans||flag?"Yes":"No");
}
return 0;
}
if(x<l)
return 0;//无用,都拿不了
if(l==1)//打表得到的坑点
return x%(r+l);
else{//其余可总结出规律
x-=r;
x%=(l+r);
x/=l;
if(!x)
return 1;
else if(x==1)
return 0;
else
return x;
}
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&l,&r);
//for(int k=l;k<=r;k++)
//f[cnt++]=k;//将可选取的f数组构建
int y;
int ans=0;
int flag=0;
//getSG(1000);
for(int i=1;i<=n;i++){
scanf("%d",&y);
if(y>=l&&y<=r)
flag=1;
ans^=nim(y);//nim游戏规律
}
puts(ans||flag?"Yes":"No");
}
return 0;
}