#include #include #include char input[40]; char cislo[40]; char temp[2]; int year; int month; int day; int girl; int correct; int years[23] = {2008, 2004, 2000, 1996, 1992, 1988, 1984, 1980, 1976, 1972, 1968, 1964, 1960, 1956, 1952, 1948, 1944, 1940, 1936, 1932, 1928, 1924, 1920}; int main(void) { while(1) { scanf("%s\n", &input); if (strcmp(input, "end") == 0) { return 0; } else { int len = strlen(input); correct = 1; year = day = month = girl = 0; if (len == 10 || len == 11) { for (int i = 0; i < len; i++) { if (input[i] == '/' and i != 6) correct = 0; } if (correct && input[0] == '1') correct = 0; if (correct) { strncpy(cislo, input, 6); strncpy(cislo+6, input+7, 4); long long number = atoll(cislo); strncpy(temp, input, 2); year = atoi(temp); strncpy(temp, input+2, 2); month = atoi(temp); strncpy(temp, input+4, 2); day = atoi(temp); if (year >= 20) year = 1900 + year; else if (year <= 9) year = 2000 + year; else correct = 0; if (month > 50) { girl = 1; month = month - 50; } if (month > 12 || month < 0) correct = 0; if (day > 31) correct = 0; if (len == 11 ) { if (year <= 1953) correct = 0; if (number % 11 != 0) { correct = 0; } } else { if (year > 1953) correct = false; } if (correct) { switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if (day>31) correct = 0; break; case 4: case 6: case 9: case 11: if (day > 30) correct = 0; break; case 2: if (day >= 29) { if (day == 29) { int found = 0; for (int i = 0; i < 23; i++) { if (years[i] == year) found = 1; } if (!found) correct = 0; } else correct = false; } break; } } } } else { correct = 0; } /* printf("%s: ", input); printf("%d %d %d ", year, month, day); */ if (!correct ) { printf("invalid\n"); } else { if (girl) printf("girl\n"); else printf("boy\n"); } } } }