





import argparse
import datetime






def 	_SCREAMING_SNAKE_CASE		(      SCREAMING_SNAKE_CASE		:str   )      ->   str:
 __lowerCAmelCase					:	Union[str, Any]      =       {
     """0""": """Sunday""",
     """1""": """Monday""",
     """2""": """Tuesday""",
     """3""": """Wednesday""",
     """4""": """Thursday""",
     """5""": """Friday""",
     """6""": """Saturday""",
 }

 __lowerCAmelCase					:	List[Any]      =       {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 0}

 # Validate
 if not 0 < len(SCREAMING_SNAKE_CASE   ) < 11:
  raise ValueError("""Must be 10 characters long"""   )

 # Get month
 __lowerCAmelCase					:	int      =       int(date_input[0] + date_input[1]   )
 # Validate
 if not 0 < m < 13:
  raise ValueError("""Month must be between 1 - 12"""   )

 __lowerCAmelCase					:	str      =       date_input[2]
 # Validate
 if sep_a not in ["-", "/"]:
  raise ValueError("""Date separator must be '-' or '/'"""   )

 # Get day
 __lowerCAmelCase					:	int      =       int(date_input[3] + date_input[4]   )
 # Validate
 if not 0 < d < 32:
  raise ValueError("""Date must be between 1 - 31"""   )

 # Get second separator
 __lowerCAmelCase					:	str      =       date_input[5]
 # Validate
 if sep_a not in ["-", "/"]:
  raise ValueError("""Date separator must be '-' or '/'"""   )

 # Get year
 __lowerCAmelCase					:	int      =       int(date_input[6] + date_input[7] + date_input[8] + date_input[9]   )
 # Arbitrary year range
 if not 45 < y < 8_500:
  raise ValueError(
      """Year out of range. There has to be some sort of limit...right?"""   )

 # Get datetime obj for validation
 __lowerCAmelCase					:	Any      =       datetime.date(int(SCREAMING_SNAKE_CASE   )   ,   int(SCREAMING_SNAKE_CASE   )   ,   int(SCREAMING_SNAKE_CASE   )   )

 # Start math
 if m <= 2:
  __lowerCAmelCase					:	List[str]      =       y - 1
  __lowerCAmelCase					:	Optional[int]      =       m + 12
 # maths var
 __lowerCAmelCase					:	int      =       int(str(SCREAMING_SNAKE_CASE   )[:2]   )
 __lowerCAmelCase					:	int      =       int(str(SCREAMING_SNAKE_CASE   )[2:]   )
 __lowerCAmelCase					:	int      =       int(2.6 * m - 5.39   )
 __lowerCAmelCase					:	int      =       int(c / 4   )
 __lowerCAmelCase					:	int      =       int(k / 4   )
 __lowerCAmelCase					:	int      =       int(d + k   )
 __lowerCAmelCase					:	int      =       int(t + u + v + x   )
 __lowerCAmelCase					:	int      =       int(z - (2 * c)   )
 __lowerCAmelCase					:	int      =       round(w % 7   )
 # End math

 # Validate math
 if f != convert_datetime_days[dt_ck.weekday()]:
  raise AssertionError("""The date was evaluated incorrectly. Contact developer."""   )

 # Response
 __lowerCAmelCase					:	str      =       F'''Your date {date_input}, is a {days[str(SCREAMING_SNAKE_CASE   )]}!'''
 return response


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      _UpperCAmelCase             =							argparse.ArgumentParser(
          description=(
              'Find out what day of the week nearly any date is or was. Enter '
              'date as a string in the mm-dd-yyyy or mm/dd/yyyy format'
          )
      )
      parser.add_argument(
          'date_input', type=str, help='Date as a string (mm-dd-yyyy or mm/dd/yyyy)'
      )
      _UpperCAmelCase             =							parser.parse_args()
      zeller(args.date_input)






def 	_SCREAMING_SNAKE_CASE		(      SCREAMING_SNAKE_CASE		:list[int]   )      ->   int:
 if not numbers:
  return 0

 if not isinstance(SCREAMING_SNAKE_CASE   ,   (list, tuple)   ) or not all(
     isinstance(SCREAMING_SNAKE_CASE   ,   SCREAMING_SNAKE_CASE   ) for number in numbers   ):
  raise ValueError("""numbers must be an iterable of integers"""   )

 __lowerCAmelCase					:	int      =       numbers[0]

 for i in range(1   ,   len(SCREAMING_SNAKE_CASE   )   ):
  # update the maximum and minimum subarray products
  __lowerCAmelCase					:	List[str]      =       numbers[i]
  if number < 0:
   __lowerCAmelCase ,					__lowerCAmelCase					:	Union[str, Any]      =       min_till_now, max_till_now
  __lowerCAmelCase					:	Optional[int]      =       max(SCREAMING_SNAKE_CASE   ,   max_till_now * number   )
  __lowerCAmelCase					:	List[Any]      =       min(SCREAMING_SNAKE_CASE   ,   min_till_now * number   )

  # update the maximum product found till now
  __lowerCAmelCase					:	List[str]      =       max(SCREAMING_SNAKE_CASE   ,   SCREAMING_SNAKE_CASE   )

 return max_prod