"""simple docstring"""







from __future__ import annotations

import typing
from collections import Counter



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     int      ):
     lowercase_	:				typing.Counter[int]													=	Counter()
     for base in range(1     ,			max_perimeter + 1      ):
          for perpendicular in range(__SCREAMING_SNAKE_CASE     ,			max_perimeter + 1      ):
               lowercase_	:				List[str]													=	(base * base + perpendicular * perpendicular) ** 0.5
               if hypotenuse == int(__SCREAMING_SNAKE_CASE      ):
                    lowercase_	:				List[Any]													=	int(base + perpendicular + hypotenuse      )
                    if perimeter > max_perimeter:
                         continue
                    triplets[perimeter] += 1
     return triplets



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     int = 10_00      ):
     lowercase_	:				Any													=	pythagorean_triple(__SCREAMING_SNAKE_CASE      )
     return triplets.most_common(1      )[0][0]


if __name__ == "__main__":
       print(F"Perimeter {solution()} has maximum solutions")


"""simple docstring"""







__SCREAMING_SNAKE_CASE    	={}



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     int     ,			__SCREAMING_SNAKE_CASE							:     int     ,			__SCREAMING_SNAKE_CASE							:     int      ):

     # if we are absent twice, or late 3 consecutive days,
     # no further prize strings are possible
     if late == 3 or absent == 2:
          return 0

     # if we have no days left, and have not failed any other rules,
     # we have a prize string
     if days == 0:
          return 1

     # No easy solution, so now we need to do the recursive calculation

     # First, check if the combination is already in the cache, and
     # if yes, return the stored value from there since we already
     # know the number of possible prize strings from this point on
     lowercase_	:				Any													=	(days, absent, late)
     if key in cache:
          return cache[key]

     # now we calculate the three possible ways that can unfold from
     # this point on, depending on our attendance today

     # 1) if we are late (but not absent), the "absent" counter stays as
     # it is, but the "late" counter increases by one
     lowercase_	:				Optional[int]													=	_calculate(days - 1     ,			__SCREAMING_SNAKE_CASE     ,			late + 1      )

     # 2) if we are absent, the "absent" counter increases by 1, and the
     # "late" counter resets to 0
     lowercase_	:				Any													=	_calculate(days - 1     ,			absent + 1     ,			0      )

     # 3) if we are on time, this resets the "late" counter and keeps the
     # absent counter
     lowercase_	:				Dict													=	_calculate(days - 1     ,			__SCREAMING_SNAKE_CASE     ,			0      )

     lowercase_	:				str													=	state_late + state_absent + state_ontime

     lowercase_	:				Tuple													=	prizestrings
     return prizestrings



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     int = 30      ):
     return _calculate(__SCREAMING_SNAKE_CASE     ,			absent=0     ,			late=0      )


if __name__ == "__main__":
       print(solution())

