






"""simple docstring"""



def 						lowercase    (				__snake_case				: int	):
		lowercase_ : List[Any]							       =   generate_pascal_triangle(__snake_case	)
		for row_idx in range(__snake_case	):
				# Print left spaces
				for _ in range(num_rows - row_idx - 1	):
						print(end=''' '''	)
				# Print row values
				for col_idx in range(row_idx + 1	):
						if col_idx != row_idx:
								print(triangle[row_idx][col_idx]		,					end=''' '''	)
						else:
								print(triangle[row_idx][col_idx]		,					end=''''''	)
				print()



def 						lowercase    (				__snake_case				: int	):

		if not isinstance(__snake_case		,					__snake_case	):
				raise TypeError('''The input value of \'num_rows\' should be \'int\''''	)

		if num_rows == 0:
				return []
		elif num_rows < 0:
				raise ValueError(
				    '''The input value of \'num_rows\' should be greater than or equal to 0'''	)

		lowercase_ : list[list[int]]							       =   []
		for current_row_idx in range(__snake_case	):
				lowercase_ : int							       =   populate_current_row(__snake_case		,					__snake_case	)
				triangle.append(__snake_case	)
		return triangle



def 						lowercase    (				__snake_case				: list[list[int]]		,					__snake_case				: int	):
		lowercase_ : List[Any]							       =   [-1] * (current_row_idx + 1)
		# first and last elements of current row are equal to 1
		lowercase_       ,					lowercase_ : Any							       =   1, 1
		for current_col_idx in range(1		,					__snake_case	):
				calculate_current_element(
				    __snake_case		,					__snake_case		,					__snake_case		,					__snake_case	)
		return current_row



def 						lowercase    (				__snake_case				: list[list[int]]		,					__snake_case				: list[int]		,					__snake_case				: int		,					__snake_case				: int		,					):
		lowercase_ : Dict							       =   triangle[current_row_idx - 1][current_col_idx - 1]
		lowercase_ : List[str]							       =   triangle[current_row_idx - 1][current_col_idx]
		lowercase_ : Dict							       =   above_to_left_elt + above_to_right_elt



def 						lowercase    (				__snake_case				: int	):

		if not isinstance(__snake_case		,					__snake_case	):
				raise TypeError('''The input value of \'num_rows\' should be \'int\''''	)

		if num_rows == 0:
				return []
		elif num_rows < 0:
				raise ValueError(
				    '''The input value of \'num_rows\' should be greater than or equal to 0'''	)

		lowercase_ : list[list[int]]							       =   [[1]]

		for row_index in range(1		,					__snake_case	):
				lowercase_ : Any							       =   [0] + result[-1] + [0]
				lowercase_ : Optional[Any]							       =   row_index + 1
				# Calculate the number of distinct elements in a row
				lowercase_ : int							       =   sum(divmod(__snake_case		,					2	)	)
				lowercase_ : str							       =   [
				    temp_row[i - 1] + temp_row[i] for i in range(1		,					distinct_elements + 1	)
				]
				lowercase_ : Union[str, Any]							       =   row_first_half[: (row_index + 1) // 2]
				row_second_half.reverse()
				lowercase_ : Optional[Any]							       =   row_first_half + row_second_half
				result.append(__snake_case	)

		return result



def 						lowercase    (				):
		from collections.abc import Callable
		from timeit import timeit

		def benchmark_a_function(__snake_case				: Callable		,					__snake_case				: int	) -> None:
				lowercase_ : int							       =   F'''{func.__name__}({value})'''
				lowercase_ : Optional[Any]							       =   timeit(F'''__main__.{call}'''		,					setup='''import __main__'''	)
				# print(f"{call:38} = {func(value)} -- {timing:.4f} seconds")
				print(F'''{call:38} -- {timing:.4f} seconds'''	)

		for value in range(1_5	):  # (1, 7, 14):
				for func in (generate_pascal_triangle, generate_pascal_triangle_optimized):
						benchmark_a_function(__snake_case		,					__snake_case	)
				print()


if __name__ == "__main__":
						import doctest

						doctest.testmod()
						benchmark()











"""simple docstring"""



def 						lowercase    (				__snake_case				: int = 1_0_0	):
		lowercase_ : str							       =   0
		lowercase_ : List[Any]							       =   0
		for i in range(1		,					n + 1	):
				sum_of_squares += i**2
				sum_of_ints += i
		return sum_of_ints**2 - sum_of_squares


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



