"""simple docstring"""




def 							_UpperCAmelCase		(       lowerCamelCase__ = 50     ):





		"""simple docstring"""




		lowerCAmelCase__        =   [1] * (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     ):
								ways_number[row_length] += ways_number[
								    row_length - tile_start - tile_length
								]

		return ways_number[length]


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





"""simple docstring"""




def 							_UpperCAmelCase		(       lowerCamelCase__			,  lowerCamelCase__     ):





		"""simple docstring"""




		while b:
				lowerCAmelCase__   ,					lowerCAmelCase__        =   b, a % b
		return a







def 							_UpperCAmelCase		(       lowerCamelCase__			,  lowerCamelCase__     ):





		"""simple docstring"""




		return a if b == 0 else euclidean_gcd_recursive(lowerCamelCase__			,  a % b     )







def 							_UpperCAmelCase		(       ):





		"""simple docstring"""




		print(f"""euclidean_gcd(3, 5) = {euclidean_gcd(3			,  5     )}"""     )
		print(f"""euclidean_gcd(5, 3) = {euclidean_gcd(5			,  3     )}"""     )
		print(f"""euclidean_gcd(1, 3) = {euclidean_gcd(1			,  3     )}"""     )
		print(f"""euclidean_gcd(3, 6) = {euclidean_gcd(3			,  6     )}"""     )
		print(f"""euclidean_gcd(6, 3) = {euclidean_gcd(6			,  3     )}"""     )

		print(f"""euclidean_gcd_recursive(3, 5) = {euclidean_gcd_recursive(3			,  5     )}"""     )
		print(f"""euclidean_gcd_recursive(5, 3) = {euclidean_gcd_recursive(5			,  3     )}"""     )
		print(f"""euclidean_gcd_recursive(1, 3) = {euclidean_gcd_recursive(1			,  3     )}"""     )
		print(f"""euclidean_gcd_recursive(3, 6) = {euclidean_gcd_recursive(3			,  6     )}"""     )
		print(f"""euclidean_gcd_recursive(6, 3) = {euclidean_gcd_recursive(6			,  3     )}"""     )


if __name__ == "__main__":
			main()




