"""simple docstring"""





from math import factorial

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


def    lowercase_   (   _lowerCamelCase:	int      ) ->      int:



							'''simple docstring'''

							if not isinstance(_lowerCamelCase						,   _lowerCamelCase      ):
														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(_lowerCamelCase      )      )


def    lowercase_   (   _lowerCamelCase:	int = 60						,   _lowerCamelCase:	int = 1000000      ) ->      int:



							'''simple docstring'''

							if not isinstance(_lowerCamelCase						,   _lowerCamelCase      ) or not isinstance(_lowerCamelCase						,   _lowerCamelCase      ):
														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
							__lowerCamelCase					:		Optional[int]		   =     0
							# the cached sizes of the previous chains
							__lowerCamelCase					:		dict[int, int]		   =     {}

							for start_chain_element in range(1						,   _lowerCamelCase      ):
														# The temporary set will contain the elements of the chain
														__lowerCamelCase					:		Dict		   =     set()
														__lowerCamelCase					:		Tuple		   =     0

														# Stop computing the chain when you find a cached size, a repeating item or the
														# length is greater then the desired one.
														__lowerCamelCase					:		Tuple		   =     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(_lowerCamelCase      )
																					chain_set_length += 1
																					__lowerCamelCase					:		Any		   =     digit_factorial_sum(_lowerCamelCase      )

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

														__lowerCamelCase					:		Optional[Any]		   =     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"""





import os


def    lowercase_   (   ) ->      List[str]:



							'''simple docstring'''

							__lowerCamelCase					:		Union[str, Any]		   =     os.path.dirname(os.path.realpath(_lowerCamelCase      )      )
							__lowerCamelCase					:		int		   =     os.path.join(_lowerCamelCase						,   "triangle.txt"      )

							with open(_lowerCamelCase      ) as f:
														__lowerCamelCase					:		List[str]		   =     f.readlines()

							__lowerCamelCase					:		List[str]		   =     []
							for line in triangle:
														__lowerCamelCase					:		Optional[int]		   =     []
														for number in line.strip().split(" "      ):
																					numbers_from_line.append(int(_lowerCamelCase      )      )
														a.append(_lowerCamelCase      )

							for i in range(1						,   len(_lowerCamelCase      )      ):
														for j in range(len(a[i]      )      ):
																					__lowerCamelCase					:		int		   =     a[i - 1][j] if j != len(a[i - 1]      ) else 0
																					__lowerCamelCase					:		Union[str, Any]		   =     a[i - 1][j - 1] if j > 0 else 0
																					a[i][j] += max(_lowerCamelCase						,   _lowerCamelCase      )
							return max(a[-1]      )


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