/*
 * A9 Date Check
 */

#include <stdio.h>

int main()
{
  int day, month, year;
  int max_day;

  /* input date */
  printf("Date (DD.MM.YYYY): ");
  if(scanf("%d.%d.%d", &day, &month, &year) < 3)
    {
      printf("ERROR: Please use format DD.MM.YYYY\n");
      return -1;
    }

  /* check if month is valid */
  if(month < 1 || month > 12) 
    {
      printf("Invalid month: %d\n", month);
      return -1;
    }

  /* determine the number of days for the given month */
  max_day = 31;
  if(month == 4 || month == 6 || month == 9 || month == 11)
    max_day = 30;
  if(month == 2)
    {
      max_day = 28;
      if(year%400 == 0 || (year%4 == 0 && year%100 != 0))
	max_day = 29;
    }

  /* check if day is valid */
  if(day < 1 || day > max_day)
    {
      printf("Invalid day: %d (month %d has %d days)\n", day, month, max_day);
      return -1;
    }

  /* only reached if day is valid */
  printf("The date %d.%d.%d is valid\n", day, month, year);
  return 0;
}
