





"""simple docstring"""




import sys

lowerCamelCase_     :						Optional[int]						=					(
    '73167176531330624919225119674426574742355349194934'
    '96983520312774506326239578318016984801869478851843'
    '85861560789112949495459501737958331952853208805511'
    '12540698747158523863050715693290963295227443043557'
    '66896648950445244523161731856403098711121722383113'
    '62229893423380308135336276614282806444486645238749'
    '30358907296290491560440772390713810515859307960866'
    '70172427121883998797908792274921901699720888093776'
    '65727333001053367881220235421809751254540594752243'
    '52584907711670556013604839586446706324415722155397'
    '53697817977846174064955149290862569321978468622482'
    '83972241375657056057490261407972968652414535100474'
    '82166370484403199890008895243450658541227588666881'
    '16427171479924442928230863465674813919123162824586'
    '17866458359124566529476545682848912883142607690042'
    '24219022671055626321111109370544217506941658960408'
    '07198403850962455444362981230987879927244284909188'
    '84580156166097919133875499200524063689912560717606'
    '05886116467109405077541002256983155200055935729725'
    '71636269561882670428252483600823257530420752963450'
)





def 						UpperCAmelCase__		(     _UpperCAmelCase = N					):






  """simple docstring"""





  A_  :       Optional[int]										=  -sys.maxsize - 1
  for i in range(len(_UpperCAmelCase					) - 12					):
    A_  :       Any										=  1
    for j in range(13					):
      product *= int(n[i + j]					)
    if product > largest_product:
      A_  :       List[Any]										=  product
  return largest_product


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






"""simple docstring"""




from heapq import heappop, heappush

import numpy as np





def 						UpperCAmelCase__		(     _UpperCAmelCase ,					_UpperCAmelCase ,					_UpperCAmelCase ,					_UpperCAmelCase ,					):






  """simple docstring"""





  A_						,       A_  :       List[str]										=  grid.shape
  A_  :       Optional[int]										=  [-1, 1, 0, 0]
  A_  :       str										=  [0, 0, -1, 1]
  if allow_diagonal:
    dx += [-1, -1, 1, 1]
    dy += [-1, 1, -1, 1]

  A_						,       A_  :       List[Any]										=  [(0, source)], set()
  A_  :       Optional[Any]										=  np.full((rows, cols) ,					np.inf					)
  A_  :       int										=  0
  A_  :       Optional[int]										=  np.empty((rows, cols) ,					dtype=_UpperCAmelCase					)
  A_  :       Optional[int]										=  None

  while queue:
    ((A_)						,       (A_))  :       str										=  heappop(_UpperCAmelCase					)
    if (x, y) in visited:
      continue
    visited.add((x, y)					)

    if (x, y) == destination:
      A_  :       int										=  []
      while (x, y) != source:
        path.append((x, y)					)
        A_						,       A_  :       List[Any]										=  predecessors[x, y]
      path.append(_UpperCAmelCase					)  # add the source manually
      path.reverse()
      return matrix[destination], path

    for i in range(len(_UpperCAmelCase					)					):
      A_						,       A_  :       Tuple										=  x + dx[i], y + dy[i]
      if 0 <= nx < rows and 0 <= ny < cols:
        A_  :       Union[str, Any]										=  grid[nx][ny]
        if next_node == 1 and matrix[nx, ny] > dist + 1:
          heappush(_UpperCAmelCase ,					(dist + 1, (nx, ny))					)
          A_  :       Optional[Any]										=  dist + 1
          A_  :       Optional[Any]										=  (x, y)

  return np.inf, []


if __name__ == "__main__":
   import doctest

   doctest.testmod()