#pragma comment(linker,"/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long #define mod 100000000 #define inf 0x3f3f3f3f #define eps 1e-6 #define N 1000010 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define PII pair using namespace std; inline LL read() { char ch=getchar();LL x=0,f=1; while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();} while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int MAXN=1000010; const int HASH=1000007; struct HASHMAP { int head[HASH],next[MAXN],size; LL state[MAXN]; void init() { size=0; memset(head,-1,sizeof(head)); } bool check(LL val) { int h=(val%HASH+HASH)%HASH; for(int i=head[h];~i;i=next[i]) if(state[i]==val)return true; return false; } int insert(LL val) { int h=(val%HASH+HASH)%HASH; for(int i=head[h];~i;i=next[i]) { if(val==state[i]) return 1; } state[size]=val; next[size]=head[h]; head[h]=size++; return 0; } }H1,H2; LL a[N]; int main() { int T,n,k,cas=1; T=read(); while(T--) { n=read();k=read(); for(int i=0;i=0&&!flag;i--) { if(i&1)sum-=a[i]; else sum+=a[i]; if(i%2==0) { if(H1.check(sum-k))flag=1; } else { if(H2.check(-sum-k))flag=1; } H1.insert(sum); H2.insert(-sum); } printf("Case #%d: ",cas++); if(flag)puts("Yes."); else puts("No."); } }