#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
const int maxn=1e5+5;
const int mod=21252;
int m[4]={0,23,28,33},a[4],n=3;
int exgcd(int a,int b,int &x,int &y){
if(!b){ x=1;y=0;return a; }
int d=exgcd(b,a%b,x,y);
int t=x;
x=y;y=t-a/b*y;
return d;
}
//m数组存mod,a数组存余数
int crt(){
int M=m[1],tx=a[1],x,y;
for(int i=2;i<=n;i++){
int c=a[i]-tx;
//为了下面求t 。tx为前i-1的解
int d=exgcd(M,m[i],x,y);
if(c%d) return -1;
// 若ab的最大公因数不是 c的因子,则x无解 。a*x ≡c(%b)
m[i]=m[i]/d;c=c/d;
int t=(x*c%m[i]+m[i])%m[i];
//t为互质的情况下求出的x ,对m[i]的各种操作保证了最小非负整数解
int lcm=M*m[i];
//lcm为 m的前i个数的最小公倍数 ,M为前i-1个
tx=(tx+t*M%lcm)%lcm;
M=lcm;
}
return tx;
}
int main(){
int id=0,d,t;
cin>>t;//这里输出 有点怪 t, 没事不用管
while(t--){
id=0;
getchar();
while(cin>>a[1]>>a[2]>>a[3]>>d){
if((a[1]+a[2]+a[3]+d)<0) break;
int ans=(crt()-d+mod)%mod;
if(!ans) ans=mod;
printf("Case %d: the next triple peak occurs in %d days.\n",++id,ans);
}
if(t) puts("");
}
return 0;
}