#include #include #include #include using namespace std; int fff (char* data) { return (10*(data[0]-'0')+(data[1]-'0')); } int main(int argc, char** argv) { char inputL[21]; while (true) { cin.getline(inputL, 21); if (strcmp(inputL, "end") == 0) { break; } int length = strlen(inputL); if ((length != 10) and (length != 11)) { cout << "invalid\n"; continue; } bool stop = false; for ( int i = 0; i < 6; i++) { if ( (inputL[i] < '0') or (inputL[i] > '9') ) { stop = true; } } if ( inputL[6] != '/' ) { stop = true; } for ( int i = 7; i < length; i++) { if ( (inputL[i] < '0') or (inputL[i] > '9') ) { stop = true; } } if (stop) { cout << "invalid\n"; continue; } int rok = fff(inputL); int mesic = fff(inputL+2); int den = fff(inputL+4); if ( (rok >= 10) and (rok <= 19) ) { cout << "invalid\n"; continue; } if ( length == 10 ) { if ( rok >= 54 ) { cout << "invalid\n"; continue; } } else { if ( (rok < 54) and (rok > 19) ) { cout << "invalid\n"; continue; } } bool prestupny = false; if (rok % 4 == 0) { prestupny = true; } if (rok % 100 == 0) { prestupny = false; } if (rok % 400 == 0) { prestupny = true; } bool holka = false; int mesic2 = mesic; if ( mesic > 50 ) { holka = true; mesic2 -= 50; } if ((mesic2 == 0) or (mesic2 > 12)) { cout << "invalid\n"; continue; } int maxDay = 0; switch (mesic2) { case 1 : maxDay = 31; break; case 2 : maxDay = 28 + prestupny; break; case 3 : maxDay = 31; break; case 4 : maxDay = 30; break; case 5 : maxDay = 31; break; case 6 : maxDay = 30; break; case 7 : maxDay = 31; break; case 8 : maxDay = 31; break; case 9 : maxDay = 30; break; case 10 : maxDay = 31; break; case 11 : maxDay = 30; break; case 12 : maxDay = 31; break; } if (den > maxDay) { cout << "invalid\n"; continue; } int cislo = atoi(inputL+7); unsigned long long datum = (rok*10000+mesic*100+den); datum *= 10000; datum += cislo; if (datum % 11 != 0 ) { cout << "invalid\n"; continue; } if (holka) { cout << "girl\n"; } else { cout << "boy\n"; } } return 0; }