#include #include using namespace std; #define TRACE(x) ; void invalid() { cout << "invalid" << endl; } int to_int(const string &s) { char ss[50]; int i = atoi(s.c_str()); sprintf(ss, "%02d", i); if (string(ss)==s) { return i; } else { return -1; } } int to_int2(const string &s) { int i = atoi(s.c_str()); return i; } int main() { int months[] = {31,28,31,30,31,30,31,31,30,31,30,31}; while (cin) { string rc; cin >> rc; string result; if (rc=="end") return 0; if ((rc.size() == 10 || rc.size() == 11) && rc[6]=='/') { int year = to_int(rc.substr(0,2)); int month = to_int(rc.substr(2,2)); int day = to_int(rc.substr(4,2)); if (year < 0 || month < 1 || day < 1) { TRACE("< 1 "); invalid(); continue; } if (year >= 10 && year < 20) { TRACE("invalid year "); invalid(); continue; } if (month > 12) { month -= 50; result = "girl"; } else { result = "boy"; } if (month < 1 || month > 12) { TRACE("bad month "); invalid(); continue; } months[1] = year%4==0 ? 29 : 28; if (day < 1 || day > months[month-1]) { TRACE("bad day "); invalid(); continue; } if (rc.size() == 10 ) { if (year > 53 || year < 10) { TRACE("year not match 2 "); invalid(); continue; } } else { if (year < 54 && year > 10) { TRACE("year not match "); invalid(); continue; } else { string check = rc.substr(0,6); check += rc.substr(7,4); TRACE(check); int sum1 = 0; for (unsigned int i=0; i