def 	__lowerCamelCase							(UpperCAmelCase__     :							Optional[Any]      , UpperCAmelCase__     :							Optional[int]  ):
					SCREAMING_SNAKE_CASE    			=       [0 for i in range(r + 1  )]
					# nc0 = 1
					SCREAMING_SNAKE_CASE    			=       1
					for i in range(1      , n + 1  ):
										# to compute current row from previous row.
										SCREAMING_SNAKE_CASE    			=       min(UpperCAmelCase__      , UpperCAmelCase__  )
										while j > 0:
															c[j] += c[j - 1]
															j -= 1
					return c[r]
print(binomial_coefficient(n=10, r=5))





def 	__lowerCamelCase							(UpperCAmelCase__     :							list[int]  ):
					if not numbers:
										return 0

					if not isinstance(UpperCAmelCase__      , (list, tuple)  ) or not all(
					    isinstance(UpperCAmelCase__      , UpperCAmelCase__  ) for number in numbers  ):
										raise ValueError("numbers must be an iterable of integers"  )

					SCREAMING_SNAKE_CASE    			=       SCREAMING_SNAKE_CASE    			=       SCREAMING_SNAKE_CASE    			=       numbers[0]

					for i in range(1      , len(UpperCAmelCase__  )  ):
										# update the maximum and minimum subarray products
										SCREAMING_SNAKE_CASE    			=       numbers[i]
										if number < 0:
															SCREAMING_SNAKE_CASE			,   SCREAMING_SNAKE_CASE    			=       min_till_now, max_till_now
										SCREAMING_SNAKE_CASE    			=       max(UpperCAmelCase__      , max_till_now * number  )
										SCREAMING_SNAKE_CASE    			=       min(UpperCAmelCase__      , min_till_now * number  )

										# update the maximum product found till now
										SCREAMING_SNAKE_CASE    			=       max(UpperCAmelCase__      , UpperCAmelCase__  )

					return max_prod




