



from __future__ import annotations

from collections.abc import Callable
from typing import Any, Generic, TypeVar

a_      :      Dict    =     TypeVar('T')
class    __UpperCamelCase			(       Generic[T]				):

 """simple docstring"""



 def __init__(	self		,				SCREAMING_SNAKE_CASE		,				SCREAMING_SNAKE_CASE      ) ->			str:
  a__												= None

  a__												= len(snake_case_      )
  a__												= [any_type for _ in range(self.N      )] + arr
  a__												= fnc
  self.build()

 def 						_UpperCAmelCase       (	self      ) ->			List[str]:
  for p in range(self.N - 1		,				0		,				-1      ):
   a__												= self.fn(self.st[p * 2]		,				self.st[p * 2 + 1]      )

 def 						_UpperCAmelCase       (	self		,				SCREAMING_SNAKE_CASE		,				SCREAMING_SNAKE_CASE      ) ->			Any:
  p += self.N
  a__												= v
  while p > 1:
   a__												= p // 2
   a__												= self.fn(self.st[p * 2]		,				self.st[p * 2 + 1]      )



 def 						_UpperCAmelCase       (	self		,				SCREAMING_SNAKE_CASE		,				SCREAMING_SNAKE_CASE      ) ->			Dict:  # noqa: E741
  a__												= l + self.N, r + self.N

  a__												= None
  while l <= r:
   if l % 2 == 1:
    a__												= self.st[l] if res is None else self.fn(snake_case_		,				self.st[l]      )
   if r % 2 == 0:
    a__												= self.st[r] if res is None else self.fn(snake_case_		,				self.st[r]      )
   a__												= (l + 1) // 2, (r - 1) // 2
  return res


if __name__ == "__main__":
     from functools import reduce

     a_      :      int    =     [1, 10, -2, 9, -3, 8, 4, -7, 5, 6, 11, -12]

     a_      :      Tuple    =     {
         0: 7,
         1: 2,
         2: 6,
         3: -14,
         4: 5,
         5: 4,
         6: 7,
         7: -10,
         8: 9,
         9: 10,
         10: 12,
         11: 1,
     }

     a_      :      List[str]    =     SegmentTree(test_array, min)
     a_      :      Union[str, Any]    =     SegmentTree(test_array, max)
     a_      :      Optional[Any]    =     SegmentTree(test_array, lambda a, b: a + b)






     def     __a					(		):
      for i in range(len(_lowerCAmelCase       )       ):
       for j in range(_lowerCAmelCase							,  len(_lowerCAmelCase       )       ):
        a__												= reduce(_lowerCAmelCase							,  test_array[i : j + 1]       )
        a__												= reduce(_lowerCAmelCase							,  test_array[i : j + 1]       )
        a__												= reduce(lambda __UpperCAmelCase							,  __UpperCAmelCase       : a + b							,  test_array[i : j + 1]       )
        assert min_range == min_segment_tree.query(_lowerCAmelCase							,  _lowerCAmelCase       )
        assert max_range == max_segment_tree.query(_lowerCAmelCase							,  _lowerCAmelCase       )
        assert sum_range == sum_segment_tree.query(_lowerCAmelCase							,  _lowerCAmelCase       )

     test_all_segments()

     for index, value in test_updates.items():
          a_      :      List[Any]    =     value
          min_segment_tree.update(index, value)
          max_segment_tree.update(index, value)
          sum_segment_tree.update(index, value)
          test_all_segments()










'''simple docstring'''





import sys

__a  			=						(
    "73167176531330624919225119674426574742355349194934"
    "96983520312774506326239578318016984801869478851843"
    "85861560789112949495459501737958331952853208805511"
    "12540698747158523863050715693290963295227443043557"
    "66896648950445244523161731856403098711121722383113"
    "62229893423380308135336276614282806444486645238749"
    "30358907296290491560440772390713810515859307960866"
    "70172427121883998797908792274921901699720888093776"
    "65727333001053367881220235421809751254540594752243"
    "52584907711670556013604839586446706324415722155397"
    "53697817977846174064955149290862569321978468622482"
    "83972241375657056057490261407972968652414535100474"
    "82166370484403199890008895243450658541227588666881"
    "16427171479924442928230863465674813919123162824586"
    "17866458359124566529476545682848912883142607690042"
    "24219022671055626321111109370544217506941658960408"
    "07198403850962455444362981230987879927244284909188"
    "84580156166097919133875499200524063689912560717606"
    "05886116467109405077541002256983155200055935729725"
    "71636269561882670428252483600823257530420752963450"
)





def 		__snake_case(							_lowerCAmelCase = N						)						->					int:
      snake_case__    :       Dict       		= -sys.maxsize - 1
      for i in range(len(_lowerCAmelCase						) - 12						):
            snake_case__    :       Any       		= 1
            for j in range(13						):
                  product *= int(n[i + j]						)
            if product > largest_product:
                  snake_case__    :       List[str]       		= product
      return largest_product


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