


'''simple docstring'''







from math import factorial

SCREAMING_SNAKE_CASE_      =			{str(digit): factorial(digit) for digit in range(10)}




def        __lowercase						(      __SCREAMING_SNAKE_CASE		)				->					int:
     """simple docstring"""




     if not isinstance(__SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE		):
          raise TypeError("""Parameter number must be int"""		)

     if number < 0:
          raise ValueError("""Parameter number must be greater than or equal to 0"""		)

     # Converts number in string to iterate on its digits and adds its factorial.
     return sum(DIGIT_FACTORIAL[digit] for digit in str(__SCREAMING_SNAKE_CASE		)		)




def        __lowercase						(      __SCREAMING_SNAKE_CASE = 60				,  __SCREAMING_SNAKE_CASE = 100_0000		)				->					int:
     """simple docstring"""




     if not isinstance(__SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE		) or not isinstance(__SCREAMING_SNAKE_CASE				,  __SCREAMING_SNAKE_CASE		):
          raise TypeError("""Parameters chain_length and number_limit must be int"""		)

     if chain_length <= 0 or number_limit <= 0:
          raise ValueError(
              """Parameters chain_length and number_limit must be greater than 0"""		)

     # the counter for the chains with the exact desired length
     __a       =   0
     # the cached sizes of the previous chains
     __a       =   {}

     for start_chain_element in range(1				,  __SCREAMING_SNAKE_CASE		):
          # The temporary set will contain the elements of the chain
          __a       =   set()
          __a       =   0

          # Stop computing the chain when you find a cached size, a repeating item or the
          # length is greater then the desired one.
          __a       =   start_chain_element
          while (
              chain_element not in chain_sets_lengths
              and chain_element not in chain_set
              and chain_set_length <= chain_length
          ):
               chain_set.add(__SCREAMING_SNAKE_CASE		)
               chain_set_length += 1
               __a       =   digit_factorial_sum(__SCREAMING_SNAKE_CASE		)

          if chain_element in chain_sets_lengths:
               chain_set_length += chain_sets_lengths[chain_element]

          __a       =   chain_set_length

          # If chain contains the exact amount of elements increase the counter
          if chain_set_length == chain_length:
               chains_counter += 1

     return chains_counter


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 print(f"""{solution()}""")










'''simple docstring'''







SCREAMING_SNAKE_CASE_      =			0  # The first color of the flag.
SCREAMING_SNAKE_CASE_      =			1  # The second color of the flag.
SCREAMING_SNAKE_CASE_      =			2  # The third color of the flag.
SCREAMING_SNAKE_CASE_      =			(red, white, blue)




def        __lowercase						(      __SCREAMING_SNAKE_CASE		)				->					list:
     """simple docstring"""




     if not sequence:
          return []
     if len(__SCREAMING_SNAKE_CASE		) == 1:
          return list(__SCREAMING_SNAKE_CASE		)
     __a       =   0
     __a       =   len(__SCREAMING_SNAKE_CASE		) - 1
     __a       =   0
     while mid <= high:
          if sequence[mid] == colors[0]:
               __a ,						__a       =   sequence[mid], sequence[low]
               low += 1
               mid += 1
          elif sequence[mid] == colors[1]:
               mid += 1
          elif sequence[mid] == colors[2]:
               __a ,						__a       =   sequence[high], sequence[mid]
               high -= 1
          else:
               __a       =   F'''The elements inside the sequence must contains only {colors} values'''
               raise ValueError(__SCREAMING_SNAKE_CASE		)
     return sequence


if __name__ == "__main__":
 import doctest

 doctest.testmod()

 SCREAMING_SNAKE_CASE_      =			input('Enter numbers separated by commas:\n').strip()
 SCREAMING_SNAKE_CASE_      =			[int(item.strip()) for item in user_input.split(',')]
 print(f"""{dutch_national_flag_sort(unsorted)}""")






