



'''simple docstring'''





from ..utils import DummyObject, requires_backends






class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				int           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Optional[int]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		str:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				str           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Optional[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Union[str, Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				int           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Tuple:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Dict           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Dict:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[str]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Dict           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Any:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Tuple           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Union[str, Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[int]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[str]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Union[str, Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[int]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[str]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				List[str]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Any:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Tuple           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[str]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Dict           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Union[str, Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Tuple           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		str:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				List[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Optional[int]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				int           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Optional[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Tuple           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Dict:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				str           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Union[str, Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				List[str]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Any:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Optional[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[int]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		str:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Any           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		int:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				List[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[str]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Tuple           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		str:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				Optional[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		Optional[int]:
      requires_backends(self  ,["""sentencepiece"""]				)







class 	lowerCAmelCase_(    metaclass=SCREAMING_SNAKE_CASE_					):
  '''simple docstring'''




  __lowercase							:				List[Any]           =				['''sentencepiece''']




  def __init__(   self  ,*__UpperCAmelCase  ,**__UpperCAmelCase				)   ->		List[Any]:
      requires_backends(self  ,["""sentencepiece"""]				)







'''simple docstring'''





import os
def        _SCREAMING_SNAKE_CASE  (	UpperCamelCase      ):



    """simple docstring"""





    lowerCAmelCase__			:  List[str]											= len(grid[0]      )
    lowerCAmelCase__			:  int											= len(UpperCamelCase      )

    lowerCAmelCase__			:  Optional[int]											= 0
    lowerCAmelCase__			:  Tuple											= 0
    lowerCAmelCase__			:  Optional[Any]											= 0

    # Check vertically, horizontally, diagonally at the same time (only works
    # for nxn grid)
    for i in range(UpperCamelCase      ):
        for j in range(n_rows - 3      ):
            lowerCAmelCase__			:  str											= grid[j][i] * grid[j + 1][i] * grid[j + 2][i] * grid[j + 3][i]
            lowerCAmelCase__			:  Optional[int]											= grid[i][j] * grid[i][j + 1] * grid[i][j + 2] * grid[i][j + 3]

            # Left-to-right diagonal (\) product
            if i < n_columns - 3:
                lowerCAmelCase__			:  Optional[int]											= (
                    grid[i][j]
                    * grid[i + 1][j + 1]
                    * grid[i + 2][j + 2]
                    * grid[i + 3][j + 3]
                )

            # Right-to-left diagonal(/) product
            if i > 2:
                lowerCAmelCase__			:  Tuple											= (
                    grid[i][j]
                    * grid[i - 1][j + 1]
                    * grid[i - 2][j + 2]
                    * grid[i - 3][j + 3]
                )

            lowerCAmelCase__			:  Dict											= max(
                UpperCamelCase							,   UpperCamelCase							,   UpperCamelCase							,   UpperCamelCase      )
            if max_product > largest:
                lowerCAmelCase__			:  Any											= max_product

    return largest
def        _SCREAMING_SNAKE_CASE  (	):



    """simple docstring"""





    lowerCAmelCase__			:  List[str]											= []
    with open(os.path.dirname(UpperCamelCase      ) + """/grid.txt"""      ) as file:
        for line in file:
            grid.append(line.strip("""\n"""      ).split(""" """      )      )

    lowerCAmelCase__			:  Dict											= [[int(UpperCamelCase      ) for i in grid[j]] for j in range(len(UpperCamelCase      )      )]

    return largest_product(UpperCamelCase      )


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


