#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxlongint=2147483647; long long f[95]; struct h { long long p; int last,ty; }hs[1000010]; int last[1100000],maxh=0; int get(long long i,int k) { int z=i%1020407; if(z<0) z+=1020407; for(int j=last[z];j;j=hs[j].last) if(hs[j].p==i&&hs[j].ty==k) return 1; return 0; } int ins(long long i,int j) { maxh++; int p=i%1020407; if(p<0) p+=1020407; hs[maxh].p=i; hs[maxh].ty=j; hs[maxh].last=last[p]; last[p]=maxh; } int getint() { int a=0,b=0,d=1; char c; while(1) { c=getchar(); if(c=='-') d=-1; else if(c>=48&&c<=57) { a=a*10+c-48; b=1; } else if(b) return d*a; } } long long s[1000010]; int main() { int T,i=0; cin>>T; while(T--) { int n1; memset(last,0,sizeof(last)); maxh=0; i++; printf("Case #%d: ",i); int n,k; scanf("%d%d",&n,&k); for(n1=1;n1<=n;n1++) { s[n1]=getint(); if(n1%2) s[n1]=s[n1-1]+s[n1]; else s[n1]=s[n1-1]-s[n1]; } int is=0; for(n1=1;n1<=n;n1++) { if(n1%2) ins(-s[n1-1],0); else ins(s[n1-1],1); if(get(k-s[n1],0)) { printf("Yes.\n"); is=1; break; } if(get(k+s[n1],1)) { printf("Yes.\n"); is=1; break; } } if(is==0) printf("No.\n"); } }