#include <stdio.h>
#include <string.h>
#include <time.h>
const char weekname[7][10] = {"日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"};
const int table_mdays[2][12] = {{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
int isleap(int year){
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
int mdays(int year, int month){
return table_mdays[isleap(year)][month-1];
}
int week_name2no(const char *str){
int i;
for(i = 0; i < 7; i++){
if(strcmp(str
, weekname
[i
]) == 0){ break;
}
}
return i;
}
int calc_day(int year, int month, int weeknum, int weekno){
struct tm tm_in = {0,0,0,1,month-1,year-1900,0,0,0};
int firstweekno = tm_out->tm_wday;
int day = (weekno - firstweekno + 7) % 7 + 1;
day += 7 * (weeknum-1);
if(day < 1 || day > mdays(year, month)){
day = -1;
}
return day;
}
int main(void){
char buf[128] = {};
int year, month, weeknum, weekno, day;
char weekstr[10];
while(fgets(buf
, 127, stdin
) != NULL
){ if(sscanf(buf
, "%d-%d,第%d%[^\n]", &year
, &month
, &weeknum
, weekstr
) < 4){ continue;
}
weekno = week_name2no(weekstr);
if(weekno >= 7){
continue;
}
if(year < 1900 || month < 1 || month > 12){
continue;
}
day = calc_day(year, month, weeknum, weekno);
if(day == -1){
}else{
printf("%d-%02d-%02d\n", year
, month
, day
); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCmNvbnN0IGNoYXIgd2Vla25hbWVbN11bMTBdID0geyLml6Xmm5zml6UiLCLmnIjmm5zml6UiLCLngavmm5zml6UiLCLmsLTmm5zml6UiLCLmnKjmm5zml6UiLCLph5Hmm5zml6UiLCLlnJ/mm5zml6UifTsKY29uc3QgaW50IHRhYmxlX21kYXlzWzJdWzEyXSA9IHt7MzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzF9LHszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMX19OwppbnQgaXNsZWFwKGludCB5ZWFyKXsKICAgIHJldHVybiB5ZWFyICUgNCA9PSAwICYmIHllYXIgJSAxMDAgIT0gMCB8fCB5ZWFyICUgNDAwID09IDA7Cn0KaW50IG1kYXlzKGludCB5ZWFyLCBpbnQgbW9udGgpewogICAgcmV0dXJuIHRhYmxlX21kYXlzW2lzbGVhcCh5ZWFyKV1bbW9udGgtMV07Cn0KaW50IHdlZWtfbmFtZTJubyhjb25zdCBjaGFyICpzdHIpewogICAgaW50IGk7CiAgICBmb3IoaSA9IDA7IGkgPCA3OyBpKyspewogICAgICAgIGlmKHN0cmNtcChzdHIsIHdlZWtuYW1lW2ldKSA9PSAwKXsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGk7Cn0KCmludCBjYWxjX2RheShpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgd2Vla251bSwgaW50IHdlZWtubyl7ICAgCiAgICBzdHJ1Y3QgdG0gdG1faW4gPSB7MCwwLDAsMSxtb250aC0xLHllYXItMTkwMCwwLDAsMH07CiAgICB0aW1lX3QgdCA9IG1rdGltZSgmdG1faW4pOwogICAgc3RydWN0IHRtICp0bV9vdXQgPSBsb2NhbHRpbWUoJnQpOyAgICAKICAgIGludCBmaXJzdHdlZWtubyA9IHRtX291dC0+dG1fd2RheTsKICAgIGludCBkYXkgPSAod2Vla25vIC0gZmlyc3R3ZWVrbm8gKyA3KSAlIDcgKyAxOwogICAgZGF5ICs9IDcgKiAod2Vla251bS0xKTsKICAgIGlmKGRheSA8IDEgfHwgZGF5ID4gbWRheXMoeWVhciwgbW9udGgpKXsKICAgICAgICBkYXkgPSAtMTsKICAgIH0KICAgIHJldHVybiBkYXk7Cn0KCmludCBtYWluKHZvaWQpewogICAgY2hhciBidWZbMTI4XSA9IHt9OwogICAgaW50IHllYXIsIG1vbnRoLCB3ZWVrbnVtLCB3ZWVrbm8sIGRheTsKICAgIGNoYXIgd2Vla3N0clsxMF07CiAgICB3aGlsZShmZ2V0cyhidWYsIDEyNywgc3RkaW4pICE9IE5VTEwpewogICAgICAgIGlmKHNzY2FuZihidWYsICIlZC0lZCznrKwlZCVbXlxuXSIsICZ5ZWFyLCAmbW9udGgsICZ3ZWVrbnVtLCB3ZWVrc3RyKSA8IDQpewogICAgICAgICAgICBwdXRzKCJJbnZhbGlkIGlucHV0LiIpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgd2Vla25vID0gd2Vla19uYW1lMm5vKHdlZWtzdHIpOwogICAgICAgIGlmKHdlZWtubyA+PSA3KXsKICAgICAgICAgICAgcHV0cygiSW52YWxpZCBpbnB1dC4iKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGlmKHllYXIgPCAxOTAwIHx8IG1vbnRoIDwgMSB8fCBtb250aCA+IDEyKXsKICAgICAgICAgICAgcHV0cygiSW52YWxpZCBkYXRlLiIpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZGF5ID0gY2FsY19kYXkoeWVhciwgbW9udGgsIHdlZWtudW0sIHdlZWtubyk7CiAgICAgICAgaWYoZGF5ID09IC0xKXsKICAgICAgICAgICAgcHV0cygiSW52YWxpZCBkYXRlLiIpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBwcmludGYoIiVkLSUwMmQtJTAyZFxuIiwgeWVhciwgbW9udGgsIGRheSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K