





"""simple docstring"""




def  _SCREAMING_SNAKE_CASE						(      _lowercase		:       int = 50   )					->int:






	'''simple docstring'''






	a :						Optional[int]      =							[[0] * 3 for _ in range(length + 1   )]

	for row_length in range(length + 1   ):
		for tile_length in range(2       ,			5   ):
			for tile_start in range(row_length - tile_length + 1   ):
				different_colour_ways_number[row_length][tile_length - 2] += (
				    different_colour_ways_number[row_length - tile_start - tile_length][
				        tile_length - 2
				    ]
				    + 1
				)

	return sum(different_colour_ways_number[length]   )


if __name__ == "__main__":
		print(F'''{solution() = }''')





"""simple docstring"""
from __future__ import annotations

from functools import lru_cache
from math import ceil

_A							=  1_00

_A							=  set(range(3, NUM_PRIMES, 2))
primes.add(2)
_A							=  42

for prime in range(3, ceil(NUM_PRIMES**0.5), 2):
    if prime not in primes:
        continue
    primes.difference_update(set(range(prime * prime, NUM_PRIMES, prime)))




@lru_cache(maxsize=1_00    )
def 					a__						(						lowerCAmelCase    )	-> set[int]:
      if number_to_partition < 0:
            return set()
      elif number_to_partition == 0:
            return {1}

      UpperCAmelCase__			:							set[int]							=    set()
      UpperCAmelCase__			:							int
      UpperCAmelCase__			:							int

      for prime in primes:
            if prime > number_to_partition:
                  continue
            for sub in partition(number_to_partition - prime    ):
                  ret.add(sub * prime    )

      return ret




def 					a__						(						lowerCAmelCase = 50_00    )	-> int | None:
      for number_to_partition in range(1			,	lowerCAmelCase    ):
            if len(partition(lowerCAmelCase    )    ) > number_unique_partitions:
                  return number_to_partition
      return None


if __name__ == "__main__":
    print(f'''{solution() = }''')

