#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s( char mo[ 10 ] , int k) ;
int day( int m, int inp, int plus, int year) ;
int temp( int y) ;
const char month[ 12 ] [ 10 ] = { "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "November" , "December" } ;
int fin, fin_year;
int main( )
{
int times, i, k, date, years, plus_days, num, j;
char mon[ 10 ] ;
while ( scanf ( "%d" ,& times
) != EOF
) {
num= 0 ;
while ( times-- )
{
num++;
for ( i= 0 ;; i++ )
{
if ( mon[ i] == '-' )
{
mon[ i] = '\0 ' ;
break ;
}
}
i= s( mon, k) ;
j= day( i, date, plus_days, years) ;
printf ( "Case %d: %d-%s-%02d\n " , num
, fin_year
, month
[ fin
] , j
) ; }
}
return 0 ;
}
char s( char mo[ 10 ] , int k)
{
int a= 0 , i, l, len= 0 ;
for ( i= 0 ; i< 12 ; i++ )
{
for ( l= 0 ; l< k; l++ )
{
if ( mo[ l] == month[ i] [ l] )
{ len++;
if ( len== k) {
a= i+ 1 ;
}
}
else
{
break ;
}
}
}
return a;
}
int temp( int y)
{
if ( y% 400 == 0 )
{
return 1 ;
}
else if ( y% 100 == 0 )
{
return 0 ;
}
else if ( y% 4 == 0 )
{
return 1 ;
}
else
{
return 0 ;
}
}
int day( int m, int inp, int plus, int year)
{
int i;
if ( m<= 7 )
{
if ( m% 2 )
{
inp= inp+ plus;
if ( inp> 31 )
{
return day( m+ 1 , 1 , inp- 32 , year) ;
}
else
{
fin= m- 1 ;
fin_year= year;
return inp;
}
}
else if ( m== 2 )
{
inp= inp+ plus;
i= temp( year) ;
if ( i== 1 )
{
if ( inp> 29 )
{
return day( m+ 1 , 1 , inp- 30 , year) ;
}
else
{
fin= m- 1 ;
fin_year= year;
return inp;
}
}
else if ( i== 0 )
{
if ( inp> 28 )
{
return day( m+ 1 , 1 , inp- 29 , year) ;
}
else
{
fin= m- 1 ;
fin_year= year;
return inp;
}
}
}
else
{
inp= inp+ plus;
if ( inp> 30 )
{
return day( m+ 1 , 1 , inp- 31 , year) ;
}
else
{
fin= m- 1 ;
fin_year= year;
return inp;
}
}
}
else if ( m>= 8 )
{
if ( m% 2 == 0 && m!= 12 )
{
inp= inp+ plus;
if ( inp> 31 )
{
return day( m+ 1 , 1 , inp- 32 , year) ;
}
else
{
fin= m- 1 ;
fin_year= year;
return inp;
}
}
else if ( m== 12 )
{
inp= inp+ plus;
if ( inp> 31 )
{
year++;
return day( 1 , 1 , inp- 32 , year) ;
}
else
{
fin= m- 1 ;
fin_year= year;
return inp;
}
}
else
{
inp= inp+ plus;
if ( inp> 30 )
{
return day( m+ 1 , 1 , inp- 31 , year) ;
}
else
{
fin= m- 1 ;
fin_year= year;
return inp;
}
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgpjaGFyIHMoY2hhciBtb1sxMF0saW50IGspOwppbnQgZGF5KGludCBtLGludCBpbnAsaW50IHBsdXMsaW50IHllYXIpOwppbnQgdGVtcChpbnQgeSk7CmNvbnN0IGNoYXIgbW9udGhbMTJdWzEwXT0geyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJ9OwppbnQgZmluLGZpbl95ZWFyOwppbnQgbWFpbigpCnsKICAgIGludCB0aW1lcyxpLGssZGF0ZSx5ZWFycyxwbHVzX2RheXMsbnVtLGo7CiAgICBjaGFyIG1vblsxMF07CiAgICB3aGlsZShzY2FuZigiJWQiLCZ0aW1lcykhPUVPRikKICAgIHsKICAgICAgICBudW09MDsKICAgICAgICB3aGlsZSh0aW1lcy0tKQogICAgICAgIHsKICAgICAgICAgICAgbnVtKys7CiAgICAgICAgICAgIG1lbXNldChtb24sJyAnLHNpemVvZihtb24pKTsKICAgICAgICAgICAgc2NhbmYoIiVkLSIsJnllYXJzKTsKICAgICAgICAgICAgZm9yKGk9MDs7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2NhbmYoIiVjIiwmbW9uW2ldKTsKICAgICAgICAgICAgICAgIGlmKG1vbltpXT09Jy0nKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG1vbltpXT0nXDAnOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNjYW5mKCIlZCIsJmRhdGUpOwogICAgICAgICAgICBzY2FuZigiJWQiLCZwbHVzX2RheXMpOwogICAgICAgICAgICBrPXN0cmxlbihtb24pOwogICAgICAgICAgICBpPXMobW9uLGspOwogICAgICAgICAgICBqPWRheShpLGRhdGUscGx1c19kYXlzLHllYXJzKTsKICAgICAgICAgICAgcHJpbnRmKCJDYXNlICVkOiAlZC0lcy0lMDJkXG4iLG51bSxmaW5feWVhcixtb250aFtmaW5dLGopOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9CmNoYXIgcyhjaGFyIG1vWzEwXSxpbnQgaykKewogICAgaW50IGE9MCxpLGwsbGVuPTA7CiAgICBmb3IoaT0wOyBpPDEyOyBpKyspCiAgICB7ICAgCiAgICAgICAgZm9yKGw9MDsgbDxrOyBsKyspCiAgICAgICAgewogICAgICAgICAgICBpZihtb1tsXT09bW9udGhbaV1bbF0pCiAgICAgICAgICAgIHsgICBsZW4rKzsKICAgICAgICAgICAgCWlmKGxlbj09ayl7CiAgICAgICAgICAgICAgICBhPWkrMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGE7Cn0KaW50IHRlbXAoaW50IHkpCnsKICAgIGlmKHklNDAwPT0wKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQogICAgZWxzZSBpZih5JTEwMD09MCkKICAgIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYoeSU0PT0wKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHJldHVybiAwOwogICAgfQp9CmludCBkYXkoaW50IG0saW50IGlucCxpbnQgcGx1cyxpbnQgeWVhcikKewogICAgaW50IGk7CiAgICBpZihtPD03KQogICAgewogICAgICAgIGlmKG0lMikKICAgICAgICB7CiAgICAgICAgICAgIGlucD1pbnArcGx1czsKICAgICAgICAgICAgaWYoaW5wPjMxKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF5KG0rMSwxLGlucC0zMix5ZWFyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZpbj1tLTE7CiAgICAgICAgICAgICAgICBmaW5feWVhcj15ZWFyOwogICAgICAgICAgICAgICAgcmV0dXJuIGlucDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmKG09PTIpCiAgICAgICAgewogICAgICAgICAgICBpbnA9aW5wK3BsdXM7CiAgICAgICAgICAgIGk9dGVtcCh5ZWFyKTsKICAgICAgICAgICAgaWYoaT09MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaW5wPjI5KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXkobSsxLDEsaW5wLTMwLHllYXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGZpbj1tLTE7CiAgICAgICAgICAgICAgICAgICAgZmluX3llYXI9eWVhcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoaT09MCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaW5wPjI4KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXkobSsxLDEsaW5wLTI5LHllYXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGZpbj1tLTE7CiAgICAgICAgICAgICAgICAgICAgZmluX3llYXI9eWVhcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlucD1pbnArcGx1czsKICAgICAgICAgICAgaWYoaW5wPjMwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF5KG0rMSwxLGlucC0zMSx5ZWFyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZpbj1tLTE7CiAgICAgICAgICAgICAgICBmaW5feWVhcj15ZWFyOwogICAgICAgICAgICAgICAgcmV0dXJuIGlucDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgaWYobT49OCkKICAgIHsKICAgICAgICBpZihtJTI9PTAmJm0hPTEyKQogICAgICAgIHsKICAgICAgICAgICAgaW5wPWlucCtwbHVzOwogICAgICAgICAgICBpZihpbnA+MzEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBkYXkobSsxLDEsaW5wLTMyLHllYXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmluPW0tMTsKICAgICAgICAgICAgICAgIGZpbl95ZWFyPXllYXI7CiAgICAgICAgICAgICAgICByZXR1cm4gaW5wOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYobT09MTIpCiAgICAgICAgewogICAgICAgICAgICBpbnA9aW5wK3BsdXM7CiAgICAgICAgICAgIGlmKGlucD4zMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgeWVhcisrOwogICAgICAgICAgICAgICAgcmV0dXJuIGRheSgxLDEsaW5wLTMyLHllYXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmluPW0tMTsKICAgICAgICAgICAgICAgIGZpbl95ZWFyPXllYXI7CiAgICAgICAgICAgICAgICByZXR1cm4gaW5wOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlucD1pbnArcGx1czsKICAgICAgICAgICAgaWYoaW5wPjMwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF5KG0rMSwxLGlucC0zMSx5ZWFyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZpbj1tLTE7CiAgICAgICAgICAgICAgICBmaW5feWVhcj15ZWFyOwogICAgICAgICAgICAgICAgcmV0dXJuIGlucDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=